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

WooCommerce PHP API如何获取商品的全部变体(含可用与不可用)

获取WooCommerce商品全部变体(含不可用变体)

get_available_variations() 确实仅返回符合条件的可用变体,要获取包含不可用变体(比如未设置价格的)的全部变体,可参考以下两种方法:

方法1:直接获取所有变体对象并标记状态

通过get_children()拿到商品下所有变体的ID,再逐个实例化变体对象,自定义规则标记是否可用:

// 假设$product为已实例化的可变产品对象
$all_variation_ids = $product->get_children();
$all_variations = [];

foreach ($all_variation_ids as $variation_id) {
    $variation = wc_get_product($variation_id);
    // 自定义可用状态判断,示例:未设置价格则标记为不可用
    $variation_data = $variation->get_data();
    $variation_data['is_available'] = !empty($variation->get_price());
    
    $all_variations[] = $variation_data;
}

这种方式能获取每个变体的完整数据,还可根据需求调整可用状态的判断规则(比如结合库存、启用状态等)。

方法2:调整可用变体的筛选逻辑(谨慎使用)

可以通过woocommerce_product_get_available_variations钩子修改原有筛选逻辑,但这种方式容易影响原有功能,更推荐使用方法1自行处理变体数据。

补充说明

  • 除价格外,还可通过$variation->is_in_stock()判断库存状态、$variation->is_enabled()判断变体是否启用,来细化可用状态的标记
  • 变体对象支持get_variation_attributes()获取属性信息、get_price_html()获取价格展示内容等方法,可按需提取数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:20:41