J'essaie de comprendre comment créer une traduction pour une publication à l'aide de l'API WPML interne (inc/wpml-api.php
).
Je veux simplement créer une traduction pour le post ID xx, définir du contenu et le publier.
J'ai essayé de jouer avec wpml_add_translatable_content
mais je n'ai pas bien compris. Malheureusement, il n’ya pas beaucoup de documentation disponible pour cela. La piste la plus proche que j'ai trouvée est ce fil , mais je ne pouvais pas réduire le code à ce dont j'avais besoin. Il est également possible de le faire en écrivant directement dans la base de données, en suivant la structure de table de WPML, mais je souhaite utiliser l'API.
Toutes les suggestions sont les bienvenues.
Je suis venu avec une fonction qui fait le travail pour l'instant:
/**
* Creates a translation of a post (to be used with WPML)
*
* @param int $post_id The ID of the post to be translated.
* @param string $post_type The post type of the post to be transaled (ie. 'post', 'page', 'custom type', etc.).
* @param string $lang The language of the translated post (ie 'fr', 'de', etc.).
*
* @return the translated post ID
* */
function mwm_wpml_translate_post( $post_id, $post_type, $lang ){
// Include WPML API
include_once( WP_PLUGIN_DIR . '/sitepress-multilingual-cms/inc/wpml-api.php' );
// Define title of translated post
$post_translated_title = get_post( $post_id )->post_title . ' (' . $lang . ')';
// Insert translated post
$post_translated_id = wp_insert_post( array( 'post_title' => $post_translated_title, 'post_type' => $post_type ) );
// Get trid of original post
$trid = wpml_get_content_trid( 'post_' . $post_type, $post_id );
// Get default language
$default_lang = wpml_get_default_language();
// Associate original post and translated post
global $wpdb;
$wpdb->update(
$wpdb->prefix.'icl_translations',
array(
'trid' => $trid,
'language_code' => $lang,
'source_language_code' => $default_lang
),
array(
'element_type' => $post_type,
'element_id' => $post_translated_id
)
);
// Return translated post ID
return $post_translated_id;
}