Python批量修改WooCommerce产品报404错及变量产品修改咨询
我来帮你解决这两个问题,先看批量修改简单产品的报错原因,再讲变量产品的批量修改方法:
修复批量修改简单产品的404错误
你遇到的rest_no_route错误主要有两个原因:
- 用错了API端点:WooCommerce REST API v3的批量操作端点是
products/batch,不是你用的products/bulk - 数据格式不符合要求:批量更新需要把要修改的产品列表包裹在
update字段下,而不是直接传元组
修正后的代码如下:
import sys import json from woocommerce import API wcapi = API( url="https://...", consumer_key="ck_...", consumer_secret="cs_...", wp_api = True, version="wc/v3", query_string_auth=True # Force Basic Authentication as query string true and using under HTTPS ) # 正确的批量更新数据结构:用update字段包含待修改产品列表 data = { "update": [ {"id": 1995, "regular_price": "1775000", "sale_price": "1685000", "stock_quantity": 6}, {"id": 4673, "regular_price": "2300000", "sale_price": "2045000", "stock_quantity": 15} ] } # 使用正确的batch端点发起请求 response = wcapi.put("products/batch", data) print(response.json())
额外提醒几个细节:
- 产品ID用整数类型更规范(字符串也能被识别,但整数是官方推荐格式)
- 每个产品对象只需要包含要修改的字段,不需要传递全量产品属性
- 确保你的Consumer Key拥有
write_products的权限
批量修改WooCommerce变量产品
变量产品的变体是独立的资源,需要针对父产品的变体端点进行批量操作。具体步骤是:
- 找到目标变量产品的父ID
- 使用
products/<父产品ID>/variations/batch端点批量更新该产品下的变体
示例代码如下:
# 批量更新某个变量产品的多个变体 variation_data = { "update": [ {"id": 123, "regular_price": "100000", "sale_price": "90000", "stock_quantity": 10}, # 变体1的ID {"id": 124, "regular_price": "150000", "sale_price": "135000", "stock_quantity": 5} # 变体2的ID ] } # 替换<父产品ID>为目标变量产品的实际ID response = wcapi.put("products/<父产品ID>/variations/batch", variation_data) print(response.json())
如果需要批量修改多个变量产品的变体,你需要循环遍历每个变量产品,分别调用对应的variations/batch端点(WooCommerce API v3不支持跨产品的变体批量更新)。
内容的提问来源于stack exchange,提问作者bghad1
相关产品推荐
相关产品推荐

