如何在WooCommerce库存状态定制后显示"可预订"文本?
WooCommerce 库存状态显示问题解决方案
问题根源
- 原代码仅处理了库存为1且有货的场景,完全忽略了缺货、可预订以及库存2-18的显示逻辑
- 你添加的第二个钩子函数优先级(10)低于原代码的99,导致被覆盖,无法生效
修复后的完整代码
替换你之前的两段代码,使用下面整合后的逻辑:
add_filter( 'woocommerce_get_availability_text', 'custom_product_availability_text', 99, 2 ); function custom_product_availability_text( $availability, $product ) { // 处理可预订场景(允许缺货下单) if ( $product->backorders_allowed() && !$product->is_in_stock() ) { $availability = __( 'Kan restnoteras', 'your-text-domain' ); } // 处理有货场景 elseif ( $product->is_in_stock() ) { $stock = $product->get_stock_quantity(); // 库存小于19时显示具体数量 if ( $stock < 19 ) { $availability = " " . $stock . " i lager"; } // 库存>=19时保留默认有货文本(可根据需求修改) // else { // $availability = __( 'i lager', 'your-text-domain' ); // } } // 处理缺货且不可预订的场景 else { $availability = __( 'Slut i lager', 'your-text-domain' ); } return $availability; }
代码说明
- 可预订判断:先检查商品是否开启可预订,且当前缺货,直接返回预订文本
- 有货场景:
- 库存1-18:显示具体库存数量 + "i lager"
- 库存≥19:保留WooCommerce默认的有货文本(如需自定义可取消注释else部分)
- 缺货不可预订:显示默认缺货文本(可根据需求修改)
- 优先级保持99,确保覆盖WooCommerce默认的显示逻辑
注意事项
- 替换代码中的
your-text-domain为你店铺实际使用的文本域(可在主题style.css中找到) - 如需调整库存阈值(比如把19改成其他数字),直接修改
$stock < 19中的数值即可
内容的提问来源于stack exchange,提问作者Åsa
相关产品推荐
相关产品推荐

