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

如何在WooCommerce中将缺货商品加入购物车?代码失效求助

解决WooCommerce缺货商品无法加入购物车的问题

你的代码存在语法错误和逻辑缺陷,导致无法正常生效,以下是修正后的完整方案:

问题分析

  1. 代码中存在HTML转义字符(如"、&&、->),这些字符会导致PHP语法解析失败
  2. 变量商品的处理逻辑不合理,父产品的 purchasable 状态判断无法直接覆盖变体的限制

修正后的代码

add_filter('woocommerce_is_purchasable', 'allow_out_of_stock_add_to_cart', 20, 2);
function allow_out_of_stock_add_to_cart($purchasable, $product) {
    // 允许缺货、预售状态的商品加入购物车
    if (in_array($product->get_stock_status(), array('out_of_stock', 'onbackorder'))) {
        return true;
    }
    
    return $purchasable;
}

// 单独处理变量商品的变体
add_filter('woocommerce_variation_is_purchasable', 'allow_out_of_stock_variations_add_to_cart', 20, 2);
function allow_out_of_stock_variations_add_to_cart($purchasable, $variation) {
    if (in_array($variation->get_stock_status(), array('out_of_stock', 'onbackorder'))) {
        return true;
    }
    
    return $purchasable;
}

关键调整说明

  • 提升钩子优先级至20,确保自定义逻辑能覆盖WooCommerce默认的判断规则
  • 拆分普通商品与变量商品变体的处理逻辑,避免逻辑冲突
  • 移除冗余的!$purchasable判断,直接强制允许指定库存状态的商品可购买
  • 替换所有HTML转义字符为标准PHP语法符号,保证代码可正常执行

额外注意事项

  • 检查WooCommerce全局库存设置,确保未勾选“禁止缺货商品下单”类选项
  • 测试前清空网站缓存,避免旧代码逻辑残留

内容的提问来源于stack exchange,提问作者Goga Trapaidze

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 11:42:49