如何修改WooCommerce的缺货预订文本?
解决WooCommerce缺货预订文本无法修改的问题
你的代码仅处理了商品有货和普通缺货两种状态,未覆盖「缺货但允许预订」的场景;同时钩子优先级设为1,容易被其他插件/主题的同优先级(或更高优先级)代码覆盖。调整方案如下:
修改后的代码
add_filter( 'woocommerce_get_availability', 'wcs_custom_get_availability', 99, 2); function wcs_custom_get_availability( $availability, $_product ) { // 有货状态文本 if ( $_product->is_in_stock() ) { $availability['availability'] = __('<div class="breadcrumbsstockstatus">På lager</div><div class="breadcrumbsstockinfo">Levering 1-2 hverdage</div>', 'woocommerce'); } // 缺货可预订状态文本(优先判断) elseif ( $_product->backorders_allowed() && !$_product->is_in_stock() ) { $availability['availability'] = __('5 days delivery, backordered', 'woocommerce'); } // 普通缺货状态文本 else { $availability['availability'] = __('Ikke på lager - kommer igen', 'woocommerce'); } return $availability; }
关键修改说明
- 提高钩子优先级:将原代码的
1改为99,确保你的代码在其他同钩子的函数之后执行,避免被覆盖 - 新增预订状态判断:用
$_product->backorders_allowed() && !$_product->is_in_stock()精准识别「缺货但允许预订」的商品,且将该判断放在普通缺货之前,避免逻辑冲突 - 优化判断结构:改用
if-elseif-else链式判断,避免多个独立if导致的逻辑覆盖问题
内容的提问来源于stack exchange,提问作者eMikkelsen
相关产品推荐
相关产品推荐

