Ich versuche herauszufinden, wie eine Übersetzung für einen Beitrag mit der internen WPML-API (inc/wpml-api.php
) erstellt wird.
Ich möchte einfach eine Übersetzung für die Post-ID xx erstellen, Inhalte festlegen und veröffentlichen.
Ich habe versucht, mit wpml_add_translatable_content
herumzuspielen, konnte es aber nicht richtig machen. Leider ist dazu nicht viel Dokumentation vorhanden. Der nächste Hinweis, den ich gefunden habe, ist dieser Thread , aber ich konnte den Code nicht auf das reduzieren, was ich brauche. Es ist auch möglich, dies durch direktes Schreiben in die Datenbank gemäß der Tabellenstruktur von WPML zu tun, aber ich möchte die API verwenden.
Anregungen sind willkommen.
Ich habe mir eine Funktion ausgedacht, die vorerst funktioniert:
/**
* 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;
}