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
相关产品推荐
相关产品推荐

