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

如何用Polylang翻译WooCommerce产品且不重复创建产品?

解决Polylang+WooCommerce单产品多语言不创建独立内容的需求

针对免费版Polylang默认会为WooCommerce产品创建独立翻译内容的问题,提供两种可行方案:

方案一:自定义字段+模板修改(推荐,完全保持单产品ID/URL)

这种方式彻底禁用Polylang对产品的翻译功能,通过自定义字段存储多语言内容,在模板中根据当前语言调用对应内容。

  1. 禁用Polylang对产品的翻译支持
    进入Polylang设置 → 「自定义文章类型」,取消勾选「产品(product)」,保存设置后Polylang将不再为产品生成独立翻译内容。

  2. 添加多语言自定义字段
    在产品编辑页的「自定义字段」区域,为每个需要翻译的字段添加对应语言的键值对:

    • 例如英文标题:键填product_title_en,值填英文名称
    • 中文标题:键填product_title_zh,值填中文名称
    • 同理添加product_desc_en(英文描述)、product_desc_zh(中文描述)
      如果觉得原生自定义字段麻烦,可以用免费版Advanced Custom Fields(ACF)创建更直观的多语言字段组
  3. 修改产品模板文件
    复制主题的single-product.php和content-product.php到子主题目录(避免主题更新丢失修改),然后替换标题和描述的输出逻辑:

    // 获取当前语言标识(根据你的Polylang语言设置调整,比如'en'、'zh')
    $current_lang = pll_current_language();
    
    // 替换产品标题(single-product.php中)
    $custom_title = get_post_meta(get_the_ID(), "product_title_{$current_lang}", true);
    $product_title = !empty($custom_title) ? $custom_title : get_the_title();
    echo '<h1 class="product_title entry-title">' . esc_html($product_title) . '</h1>';
    
    // 替换产品描述(single-product.php中)
    $custom_desc = get_post_meta(get_the_ID(), "product_desc_{$current_lang}", true);
    $product_desc = !empty($custom_desc) ? wpautop($custom_desc) : get_the_content();
    echo '<div class="entry-content">' . $product_desc . '</div>';
    

    产品列表页(content-product.php)做类似修改,替换标题和简短描述的输出即可。

方案二:同步字段+强制URL指向主产品(适合不想大量改模板的用户)

这种方式保留Polylang的产品翻译功能,但通过同步字段和代码强制所有语言指向同一个产品URL:

  1. 开启字段同步
    进入Polylang设置 → 「高级」,开启「同步自定义字段」,然后添加WooCommerce核心字段(如_price、_stock等)到同步列表,确保翻译版产品的核心信息和主产品保持一致。

  2. 强制语言切换指向主产品URL
    在子主题的functions.php中添加以下代码,让产品的语言切换链接始终指向默认语言的产品URL:

    add_filter('pll_get_post_translation_url', function($url, $post_id, $lang) {
        if (get_post_type($post_id) !== 'product') return $url;
        // 获取默认语言的主产品ID
        $main_product_id = pll_get_post($post_id, pll_default_language());
        return get_permalink($main_product_id);
    }, 10, 3);
    
  3. 翻译产品仅修改名称和描述
    创建产品的翻译版本时,只修改产品名称和描述,其他核心字段依赖Polylang的同步功能自动保持一致,用户切换语言时会加载对应翻译的内容,但访问的是同一个URL。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:45:32