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

Python调用WooCommerce API创建WPML多语言分类失败及插件必要性咨询

问题:Python创建WooCommerce多语言分类出错及插件疑问

场景与问题

环境配置:

  • Python 3.8 + woocommerce包
  • WordPress 搭配 WooCommerce 7.3、WPML Multilingual CMS 4.5.14

编写的Python代码如下:

from woocommerce import API

# 创建API实例
wcapi = API(
    url="FQDN",
    consumer_key="yourconsumerkey",
    consumer_secret="yourconsumersecret",
    wp_api=True,
    version="wc/v3"
)

# 主语言(英文)分类数据
category_data_en = {
    "name": "Category Name in English",
    "parent": 0,
    "meta_data": [
        {
            "key": "_wpml_language",
            "value": "en"
        },
        {
            "key": "_wpml_translation_status",
            "value": "0"
        },
        {
            "key": "_wpml_element_type",
            "value": "tax_category"
        }
    ]
}

# 创建主语言分类
new_category_en = wcapi.post("products/categories", category_data_en).json()

# 波兰语翻译分类数据
category_data_pl = {
    "name": "Category Name in Polish",
    "meta_data": [
        {
            "key": "_wpml_language",
            "value": "pl"
        },
        {
            "key": "_wpml_translation_of",
            "value": new_category_en.get("id")
        },
        {
            "key": "_wpml_translation_status",
            "value": "1"
        },
        {
            "key": "_wpml_element_type",
            "value": "tax_category"
        }
    ]
}

# 创建翻译分类
new_category_pl = wcapi.post("products/categories", category_data_pl).json()

运行代码后生成了两个英文分类,同时疑问:是否必须安装WooCommerce Multilingual才能正确创建多语言分类?


错误原因分析

  • 直接手动写入WPML元数据的方式不被WPML内部逻辑认可。WPML对翻译关系的管理有专属机制,不是简单通过meta_data写入_wpml_language等字段就能触发翻译关联的。
  • 代码中第二个分类的_wpml_language元数据未被WPML识别,导致它继承了网站默认语言(英文),最终变成两个独立的英文分类,而非翻译关系。

WooCommerce Multilingual的必要性

必须安装该插件。WPML Multilingual CMS只是基础多语言框架,要实现和WooCommerce的深度整合(包括商品/分类的翻译关联、多语言数据同步、API支持等),必须依赖WooCommerce Multilingual插件。

安装后,插件会扩展WooCommerce的API,提供专门的多语言参数(如language、translation_of),让WPML能正确识别并建立合法的翻译关系,而非生成独立分类。

修正后的代码示例

安装并激活WooCommerce Multilingual后,使用插件支持的API参数编写代码:

from woocommerce import API

wcapi = API(
    url="你的站点完整域名",
    consumer_key="你的消费密钥",
    consumer_secret="你的消费秘钥",
    wp_api=True,
    version="wc/v3"
)

# 创建主语言(英文)分类,无需手动添加WPML元数据
category_data_en = {
    "name": "Category Name in English",
    "parent": 0
}
new_category_en = wcapi.post("products/categories", category_data_en).json()

# 创建波兰语翻译,使用WooCommerce Multilingual支持的专属参数
category_data_pl = {
    "name": "Category Name in Polish",
    "language": "pl",
    "translation_of": new_category_en.get("id")
}
new_category_pl = wcapi.post("products/categories", category_data_pl).json()

说明:安装插件后,WooCommerce API会原生支持language和translation_of参数,WPML会自动处理内部的翻译关联和元数据,不会再生成独立的同语言分类。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:31:01