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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:32:45