使用C#调用WooCommerce REST API更新商品元数据遇到问题
解决C#通过WooCommerce REST API更新商品元数据的问题
问题出在你给meta_data赋值了单个ProductMeta对象——WooCommerce REST API要求这个字段是数组/列表类型,不是单个实例。另外还要注意元数据字段的必填规则,修正后的代码和注意事项如下:
修正后的代码
public async Task<string> DoSomething() { MyRestAPI rest = new MyRestAPI(url, key, secret); WCObject wc = new WCObject(rest); var updatedProduct = await wc.Product.Update( id: ulong.Parse(txtPID.Text), data: new Product { name = txtName.Text, price = Convert.ToInt32(txtPrice.Text).ToString(), // WooCommerce的price字段为字符串类型,避免序列化异常 meta_data = new List<ProductMeta> { new ProductMeta { id = 23323, key = "你的元数据键名", value = "something" } } } ); return JsonConvert.SerializeObject(updatedProduct); }
关键注意事项
- 元数据必须用列表包裹:哪怕只更新一条元数据,也要用
List<ProductMeta>赋值,不能直接传单个ProductMeta对象 - 更新已有元数据:必须传入正确的元数据
id(这个ID是WooCommerce为该商品元数据分配的唯一ID,不是商品ID),同时key要和原元数据的键名一致,否则会被当成新元数据添加 - 新增元数据:不需要传
id,只指定key和value即可,示例:meta_data = new List<ProductMeta> { new ProductMeta { key = "new_custom_meta", value = "新的元数据值" } } - price字段类型:WooCommerce REST API中
price字段是字符串类型,直接传整数可能导致序列化问题,建议转成字符串后传入
内容的提问来源于stack exchange,提问作者El Programador
相关产品推荐
相关产品推荐

