En uno de mis proyectos necesitaba programáticamente duplicar las traducciones para  famoso plugin wpml

Que es Wpml?

Plugin que traduze cualquier web de WordPress

metalenguaje de WordPress

 

En su foro oficial hay varias partes de solución con enlaces a otras webs etc.

Pero ninguno de ellos no ha cumplido mis necesidades. Resulta que lo he creado en base de los de mas y colocare aquí la solucion

//imaginamos que post en ingles ya esta publicado y es la lengua por defecto, si por defecto es otra hacer cambios

function get_post_data_by_lang($lang){
//cojemos datos depende de valor de idioma $lng
    if ($lang == 'es'){ //aqui sacamos datos de alguna manera, para ejemplo lo pondre directamente como texto
        $postarray['post_title'] = 'Titulo en castellano';
        $postarray['post_content'] = 'Contenido en castellano';
        $postarray['post_excerpt'] = 'Descripción corta en castellano';
    }elseif ($lang == 'ru') {
        $postarray['post_title'] = 'Titulo en ruso';
        $postarray['post_content'] = 'Contenido en ruso';
        $postarray['post_excerpt'] = 'Descripción corta en ruso';
    }
    return $postarray; //devolvemos resultado final depende de idioma elejida
}

echo 'Post id is: '.$post_id.'
';
$langs_to_duplicate=['es','ru']; //idiomas
foreach ($langs_to_duplicate as $lang) {  
    $tr_post_id = $sitepress->make_duplicate( $post_id, $lang ); //duplicamos post de idioma ingles
    echo 'Duplicated post ID: '.$tr_post_id.' for Lang is: '.$lang.'
';
    $postarray = get_post_data_by_lang($lang); //dentro de función asigno valores depende de idioma
    $postarray['ID'] = $tr_post_id;
    $postarray['post_author'] = 1;    
    if (wp_update_post($postarray, true)){ //renovamos post adecuado
        echo 'Updated post ID: '.$tr_post_id.' Lang is: '.$lang.'
';
    }
}
//esta peticion nos permita desactivar la sincronizacion de TODOS traduciones que se activa por defecto cuando duplicas post
$wpdb->query("delete from wp_postmeta where meta_key = '_icl_lang_duplicate_of';");

OJO con copiar y pegar! la ultima usa wp_postmeta