如何设置WooCommerce仅在库存≤50时显示商品库存状态?
WooCommerce 仅在库存≤50时显示库存状态的配置方法
你原有的代码存在两个问题:一是库存≥50时没有返回值,会导致逻辑错误;二是没考虑可变产品的子产品(Variations)——这类产品的库存通常由子SKU单独管理,而非父产品。
修正后的代码如下,同时兼容简单产品和可变产品:
add_filter( 'woocommerce_get_availability', 'display_availability_conditionally', 10, 2 ); function display_availability_conditionally( $availability, $product ) { // 区分可变产品的子产品与普通产品 if ( $product->is_type('variation') ) { $stock_qty = $product->get_stock_quantity(); $managing_stock = $product->managing_stock(); } else { $stock_qty = $product->get_stock_quantity(); $managing_stock = $product->managing_stock(); } // 仅当开启库存管理且库存≤50时,保留库存状态显示 if ( $managing_stock && $stock_qty <= 50 && $stock_qty > 0 ) { return $availability; } else { // 其他情况清空库存状态文本,不显示库存信息 $availability['availability'] = ''; $availability['class'] = ''; return $availability; } }
代码说明:
- 针对可变产品的子产品做了单独判断,确保子SKU的库存逻辑生效
- 当库存≥50、未开启库存管理,或库存为0时,清空库存状态的显示内容
- 如果需要在库存为0时显示“缺货”状态,可去掉代码中的
&& $stock_qty > 0条件
使用方法:
将代码添加到当前主题的functions.php文件末尾,或者使用代码片段插件(如Code Snippets)添加,避免主题更新导致代码丢失。
内容的提问来源于stack exchange,提问作者Wanderlust Consulting
相关产品推荐
相关产品推荐

