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

如何通过ACF前端表单创建WPML多语言文章?

实现WPML+ACF前端表单同步创建双语文章的方案

核心逻辑

先通过ACF前端表单收集英语(en)、德语(de)两种语言的内容,提交后优先创建/更新主语言(这里以英语为主语言)的文章,再调用WPML的API生成德语翻译版本,并同步对应字段内容。

1. 配置ACF双语字段组

在ACF Pro里创建两组字段,分别对应两种语言的内容,示例字段:

  • 英语内容组:en_post_title(文本类型)、en_post_content(富文本类型)
  • 德语内容组:de_post_title(文本类型)、de_post_content(富文本类型)
    将这些字段添加到前端表单中,让用户一次性输入两种语言的内容。

2. 编写表单提交处理代码

在主题的functions.php或自定义插件中,添加ACF保存后的钩子逻辑,处理双语文章的创建:

// 钩子ACF表单保存事件,优先级设为20确保ACF字段已完成保存
add_action('acf/save_post', 'sync_bilingual_posts', 20);
function sync_bilingual_posts($post_id) {
    // 跳过自动保存和版本修订的触发
    if (wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) {
        return;
    }

    // 获取表单提交的双语字段值
    $en_title = get_field('en_post_title', $post_id);
    $en_content = get_field('en_post_content', $post_id);
    $de_title = get_field('de_post_title', $post_id);
    $de_content = get_field('de_post_content', $post_id);

    // 更新主语言(en)文章的标题和内容
    wp_update_post([
        'ID' => $post_id,
        'post_title' => $en_title,
        'post_content' => $en_content,
    ]);

    // 检查WPML是否加载,避免未启用时报错
    if (!function_exists('wpml_make_post_duplicate') || !global_exists('sitepress')) {
        return;
    }

    global $sitepress;
    $original_lang = $sitepress->get_current_language();

    // 切换到德语环境
    $sitepress->switch_lang('de');

    // 创建主文章的德语副本
    $de_post_id = wpml_make_post_duplicate($post_id);

    // 更新德语文章的标题和内容
    wp_update_post([
        'ID' => $de_post_id,
        'post_title' => $de_title,
        'post_content' => $de_content,
    ]);

    // 同步ACF字段(若有其他自定义字段,按需添加同步逻辑)
    update_field('en_post_title', $en_title, $de_post_id);
    update_field('en_post_content', $en_content, $de_post_id);
    update_field('de_post_title', $de_title, $de_post_id);
    update_field('de_post_content', $de_content, $de_post_id);

    // 建立WPML翻译关联,标记德语文章为英语文章的翻译版本
    do_action('wpml_set_element_language_details', [
        'element_id' => $de_post_id,
        'element_type' => 'post',
        'language_code' => 'de',
        'trid' => $sitepress->get_element_trid($post_id, 'post'),
        'source_language_code' => 'en'
    ]);

    // 切回原语言环境
    $sitepress->switch_lang($original_lang);
}

3. 关键注意事项

  • 确保当前操作的用户拥有WPML创建翻译文章的权限,避免因权限不足导致创建失败。
  • 若使用ACF复杂字段(如重复器、画廊),需要额外编写字段同步逻辑,确保复杂字段的内容在双语版本中正确对应。
  • 测试阶段建议在本地环境验证,避免影响线上数据。
  • 可在前端表单提交后添加提示信息,告知用户双语文章已成功创建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:40:10