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

WooCommerce购物车超库存添加无错误提示问题

解决WooCommerce超库存添加无错误提示问题

问题分析

你添加的代码存在几个可能导致错误提示不显示的问题:

  • 变体商品库存判断错误:如果是带属性的可变产品,库存管理在变体层级,原代码直接用父产品ID获取库存,会拿到错误数值,导致判断逻辑不触发。
  • 通知渲染依赖缺失:若主题未在添加购物车后的跳转页面(如购物车页、产品页)调用wc_print_notices()函数,WooCommerce的错误通知无法被渲染显示。
  • 提示文本参数逻辑颠倒:原错误提示的参数顺序不符合语义,虽不是不显示的直接原因,但会导致提示内容逻辑混乱。

修复后的代码

替换主题functions.php中的原有代码为以下版本:

add_filter('woocommerce_add_to_cart_validation', 'validate_product_stock_before_add_to_cart', 10, 5);

function validate_product_stock_before_add_to_cart($passed, $product_id, $quantity, $variation_id = 0, $variation = array()) {
    // 针对变体商品,优先使用变体ID获取产品对象
    $target_product_id = $variation_id > 0 ? $variation_id : $product_id;
    $product = wc_get_product($target_product_id);

    if (!$product) {
        return $passed;
    }

    // 检查是否启用库存管理,且用户输入数量超过库存
    if ($product->managing_stock()) {
        $stock_quantity = $product->get_stock_quantity();
        if (isset($stock_quantity) && $quantity > $stock_quantity) {
            wc_add_notice(
                sprintf(
                    __('你不能添加超过%d件该商品到购物车,库存仅剩%d件。', 'woocommerce'),
                    $stock_quantity,
                    $stock_quantity
                ),
                'error'
            );
            $passed = false;
        }
    }

    return $passed;
}

额外检查步骤

  • 确认主题通知渲染:打开主题的cart.php、single-product.php等模板文件,检查是否存在<?php wc_print_notices(); ?>代码。若没有,在页面合适位置(如购物车页内容区域顶部)添加该代码,确保通知能被渲染。
  • 测试不同商品类型:分别测试普通简单商品和带属性的变体商品,验证超库存添加时均会触发错误提示。
  • 清除缓存:清理网站缓存插件及浏览器缓存,避免旧代码或缓存导致的问题。

内容的提问来源于stack exchange,提问作者vikas rao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:18:11