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

如何通过WooCommerce REST API映射属性与变体获取变体ID

WooCommerce REST API v3 获取可变产品变体ID及属性映射方案

一、从现有产品数据中提取变体ID

当你通过GET /wp-json/wc/v3/products/<product_id>获取到可变产品的完整数据后,直接从返回结果的variations数组里提取每个变体对象的id字段即可,这就是对应的变体ID。

示例返回数据片段:

{
  "id": 100, // 主产品ID
  "type": "variable",
  "variations": [
    {"id": 101, "attributes": [{"name": "尺寸", "option": "M"}], ...},
    {"id": 102, "attributes": [{"name": "尺寸", "option": "L"}], ...}
  ]
}

这里的101、102就是变体ID。

二、属性、选项与变体的映射方法

1. 属性与选项的基础对应

产品数据中的attributes数组包含该产品所有属性的完整信息(属性ID、名称、可选值等),可以先基于这个数组建立属性ID→属性名称/选项列表的映射,方便后续关联变体。

2. 变体与属性选项的关联

每个变体的attributes字段会明确列出该变体对应的属性选项组合,你可以通过以下两种方式构建映射关系:

  • 基于选项名称:将变体对应的属性名称+选项名称组合作为键,关联到变体ID,适合属性选项名称唯一的场景:
    const variationLookup = {};
    product.variations.forEach(variation => {
      const key = variation.attributes.map(attr => `${attr.name}:${attr.option}`).join(';');
      variationLookup[key] = variation.id;
    });
    // 示例:通过"尺寸:M"获取变体ID
    const targetId = variationLookup["尺寸:M"]; // 返回101
    
  • 基于选项ID:如果使用全局属性(存在option_id字段),推荐用属性ID+选项ID的组合作为键,避免选项名称重复导致的映射错误:
    const variationLookup = {};
    product.variations.forEach(variation => {
      const key = variation.attributes.map(attr => `${attr.id}:${attr.option_id}`).join(';');
      variationLookup[key] = variation.id;
    });
    

三、单独获取变体ID的端点

WooCommerce提供了单独的变体列表端点:GET /wp-json/wc/v3/products/<product_id>/variations,调用该接口会直接返回目标产品下所有变体的完整数据,包含每个变体的ID。不过如果已经通过产品端点获取了完整数据,无需额外调用此接口,直接从产品的variations数组提取即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:36:27