No queda dudas que el mejor plugin para tener un WordPress multilingual es WPML. Lo uso en todas las web que desarrollo. Eso que he probado qTranslate y Polylang.
Pero este post no trata de las cualidades de WPML, si no más bien, de cómo hacer para poder traducir un post sin tener que hacerlo vía el panel de administración. Por ejemplo cuando quieras crear post automáticamente en masa (como fue mi caso).
Primero, debes insertar el post como lo haces normalmente:
$translated_post_id = wp_insert_post(array(
'post_title' => "Name post",
'post_content' => "Post's description",
'post_type' => 'evento'
));
Una vez insertes el post, lo que sigues es sincronizarlo con la versión español, de la cual, ya debes contar con el ID. Yo guardaré la variable del post original en $original_post_id.
$trid = wpml_get_content_trid('post_evento', $original_post_id );
global $wpdb;
$wpdb->update( $wpdb->prefix.'icl_translations', array( 'trid' => $trid, 'language_code' => 'en', 'source_language_code' => wpml_get_default_language() ), array( 'element_id' => $translated_post_id ) );
Y eso es todo! Con eso habremos enviado el post creado a la versión inglés del post original.
Si tienes alguna duda, me lo haces llegar en los comentarios, que gustoso te ayudaré.