如何将页面设置为另一个页面的翻译php?

How to set pages as translations of another page with php?

我目前正在使用 PHP 创建一个登陆页面网络,并将它们发布到 WordPress 上。这些页面具有父子关系,我在使用 wp_insert_post() 之前添加元数据以发布它们。我的代码工作正常,但页面是用英语创建的,英语是 WP 的主要语言。但是,该网站还拥有 2 种以上的语言,并使用 WPML 插件进行翻译。有什么方法可以仅使用代码创建翻译页面并将其设置为原始页面的翻译吗?

以下是如何以编程方式在 PHP 中插入 post 和翻译的示例。这里 en 是默认语言,de 是辅助语言。

基本上是:

  • 创建两个 post。
  • 得到第一个的trid
  • 把它和第二个联系起来。

样本:

$new_page_id = wp_insert_post($new_page);
$new_page_translated_id = wp_insert_post($new_page_translated);
$wpml_element_type = apply_filters( 'wpml_element_type', get_post_type( $new_page_id ) );
$wpml_element_trid   = apply_filters( 'wpml_element_trid', false, $new_page_id, $wpml_element_type );

$set_language_args = array(
  'element_id'    => $new_page_translated_id,
  'element_type'  => $wpml_element_type,
  'trid'   => $wpml_element_trid,
  'language_code'   => 'de',
  'source_language_code' => 'en',
);

do_action( 'wpml_set_element_language_details', $set_language_args );