You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PHP为WordPress站点创建关联原页面的WPML多语言翻译页面

实现WPML多语言翻译页面自动创建的方法

完全可以通过WPML提供的原生API实现代码自动创建翻译页面、并和原主语言页面关联的需求,不需要手动后台操作,具体实现步骤如下:

核心实现步骤

1. 提前获取主语言页面的关键参数

首先你通过wp_insert_post创建主语言(英语)页面后,要拿到两个核心参数:

  • 主语言页面的post_id
  • WPML为该页面生成的trid(翻译组ID,WPML用这个参数关联同一内容的所有翻译版本)

获取trid的示例代码:

// 假设$en_post_id是你创建的英文主语言页面的ID
$trid = apply_filters('wpml_element_trid', null, $en_post_id, 'post_page');

2. 创建目标语言的翻译页面

同样调用wp_insert_post生成对应语言的页面内容,标题、正文、模板、自定义字段等都可以单独设置为对应语言的版本:

// 示例:创建简体中文翻译页面
$zh_post_args = [
    'post_title' => '中文落地页标题',
    'post_content' => '中文落地页正文内容',
    'post_type' => 'page',
    'post_status' => 'publish',
    // 如果是子页面,这里要填对应语言的父页面翻译ID,不要填英文父页ID
    'post_parent' => $translated_parent_post_id,
    // 其他你需要的参数配置
];
$zh_post_id = wp_insert_post($zh_post_args);

// 给翻译页添加对应语言的元数据,和你给主语言页加元数据的逻辑一致
add_post_meta($zh_post_id, 'your_meta_key', '对应语言的元数据值');

3. 关联翻译关系到主语言页面

调用WPML的语言设置API,把刚创建的翻译页和主语言页绑定到同一个翻译组:

if ($zh_post_id && !is_wp_error($zh_post_id) && function_exists('wpml_set_element_language_details')) {
    $lang_args = [
        'element_id' => $zh_post_id,
        'element_type' => 'post_page',
        'trid' => $trid, // 之前拿到的主语言页面的翻译组ID
        'language_code' => 'zh-hans', // 替换为你实际的目标语言代码,和WPML后台设置一致
        'source_language_code' => 'en', // 主语言代码
    ];
    wpml_set_element_language_details($lang_args);
}

注意事项

  • 语言代码必须和WPML后台「语言」设置中对应语言的代码完全一致,避免关联失败
  • 如果页面存在父子层级,需按先翻译父页面、再翻译子页面的顺序执行,子页面的post_parent参数必须填写对应语言的父页面翻译ID,不能使用主语言的父页面ID
  • 自定义字段、特色图片等附属内容需要单独给翻译页面设置,不会自动从主语言页同步
  • 如果是自定义文章类型,element_type参数需要修改为post_${自定义文章类型别名},比如商品类型就是post_product

内容的提问来源于stack exchange,提问作者kumorin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 06:00:03