You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WooCommerce库存状态定制后显示"可预订"文本?

WooCommerce 库存状态显示问题解决方案

问题根源

  1. 原代码仅处理了库存为1且有货的场景,完全忽略了缺货、可预订以及库存2-18的显示逻辑
  2. 你添加的第二个钩子函数优先级(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 02:15:24