如何通过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
相关产品推荐
相关产品推荐

