WooCommerce如何修改代码让简单产品也适用库存>5不显示规则
WooCommerce库存显示规则适配简单产品修改方案
你可以直接替换原有函数为以下代码,新增了简单产品兼容逻辑,原有可变产品的库存显示规则完全保留:
function get_variation_stock_status( $product, $name, $term_slug ){ // 新增简单产品处理逻辑 if ( $product->is_type( 'simple' ) ) { $stock_qty = $product->get_stock_quantity(); // 库存大于5时不展示库存信息 if ( $stock_qty > 5 ) { return ''; } return $stock_qty == 0 ? ' - ' . __(pll__('Stokta Yok'), 'mytheme-hello') : ' - ' . $stock_qty . ' ' . __(pll__('adet Stokta'), 'mytheme-hello'); } // 原有可变产品处理逻辑 $stock_qty = 0; // 初始化变量避免未定义报错 foreach ( $product->get_available_variations() as $variation ){ if ( $variation['attributes'][$name] == $term_slug ) { $variation_obj = wc_get_product( $variation['variation_id'] ); // 原代码注释标注为大于20返回为笔误,实际执行逻辑为大于5返回,与需求匹配 if ( $variation_obj->get_stock_quantity() > 5 ) { return ''; } $stock_qty = $variation_obj->get_stock_quantity(); break; } } return $stock_qty == 0 ? ' - ' . __(pll__('Stokta Yok'), 'mytheme-hello') : ' - ' . $stock_qty . ' ' . __(pll__('adet Stokta'), 'mytheme-hello'); }
本次修改的核心逻辑:
- 新增产品类型判断:函数开头优先识别简单产品,直接读取产品自身库存做判断,规则和变体产品完全一致,库存大于5时不显示库存信息
- 补充变量初始化:提前定义
$stock_qty默认值,避免特殊场景下出现PHP未定义变量报错 - 原有可变产品的处理逻辑完全复用,不会影响之前已经生效的变体产品显示效果
你原有调用该函数的逻辑无需做任何调整,替换函数内容即可生效。
内容的提问来源于stack exchange,提问作者devo-zara
相关产品推荐
相关产品推荐

