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

Polylang与WP-All Import WooCommerce插件兼容及批量导入问题问询

解决WP All Import与Polylang WooCommerce批量关联多语言产品的问题

直接上可落地的实现方案——通过自定义函数,在导入第二种语言产品时自动通过SKU匹配原语言产品ID,并填充到_import_translations_id字段:

步骤1:添加自定义函数到主题或插件

将以下代码添加到你的主题functions.php文件,或者创建一个简单的自定义插件:

function get_product_id_by_sku_for_polylang($sku) {
    // 校验SKU非空
    if (empty($sku)) return '';
    
    // 通过SKU查询对应产品ID(默认查询网站默认语言的产品)
    $product_id = wc_get_product_id_by_sku($sku);
    
    return $product_id ? $product_id : '';
}

步骤2:在WP All Import中配置字段映射

导入第二种语言的产品文件时,找到_import_translations_id自定义字段的映射设置:

  • 选择「PHP函数」作为映射类型
  • 输入函数调用:get_product_id_by_sku_for_polylang({SKU列名}),替换{SKU列名}为你导入文件中SKU对应的列标题(比如CSV里SKU列叫product_sku,就写get_product_id_by_sku_for_polylang({product_sku}))

关键注意事项

  • 确保所有产品的SKU全局唯一,这是匹配的核心依据
  • 原语言产品必须在导入第二种语言产品前完成导入并同步到Polylang
  • 确认Polylang已启用WooCommerce多语言支持,且产品语言设置正确
  • 若需指定查询特定语言的产品,可在函数中添加Polylang的语言过滤逻辑,比如用pll_get_post配合语言参数调整

可选优化(适配更新场景)

如果需要处理后续更新多语言产品的场景,可在函数中添加逻辑避免重复覆盖已有翻译关联:

function get_product_id_by_sku_for_polylang($sku) {
    if (empty($sku)) return '';
    
    $product_id = wc_get_product_id_by_sku($sku);
    
    // 检查当前导入产品是否已有翻译关联
    global $wpdb;
    $current_product_id = $wpdb->get_var($wpdb->prepare("SELECT post_id FROM {$wpdb->prefix}pmxi_posts WHERE import_id = %d AND post_title = %s", $_GET['import_id'], $_POST['post_title']));
    if ($current_product_id) {
        // 替换为你的原语言代码,比如'zh'
        $existing_translation_id = pll_get_post($current_product_id, 'zh');
        if ($existing_translation_id) return $existing_translation_id;
    }
    
    return $product_id ? $product_id : '';
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:11:03