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

如何在WooCommerce购物车非空时禁用Add to Cart按钮并替换提示语?

实现购物车非空时隐藏Add to Cart按钮并替换提示语

核心代码实现

下面的代码通过WooCommerce原生钩子检测购物车状态,自动替换Add to Cart按钮为指定提示语,同时支持单个商品页面和商品列表(归档)页面:

// 替换单个商品页面的Add to Cart按钮
add_action('woocommerce_single_product_summary', 'replace_add_to_cart_when_cart_not_empty', 1);

function replace_add_to_cart_when_cart_not_empty() {
    // 检查购物车是否有商品
    if (!WC()->cart->is_empty()) {
        // 移除默认的Add to Cart按钮
        remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30);
        
        // 插入自定义提示语
        add_action('woocommerce_single_product_summary', 'show_cart_not_empty_alert', 30);
    }
}

function show_cart_not_empty_alert() {
    echo '<p class="cart-full-alert" style="color: #dc3232; font-weight: bold;">在添加其他商品到购物车前,请先完成当前购物车内的订单结算。</p>';
}

// 替换商品列表页面的Add to Cart按钮
add_filter('woocommerce_loop_add_to_cart_link', 'replace_loop_add_to_cart_when_cart_full', 10, 2);

function replace_loop_add_to_cart_when_cart_full($button_html, $product) {
    if (!WC()->cart->is_empty()) {
        $button_html = '<p class="cart-full-alert" style="color: #dc3232; font-weight: bold;">在添加其他商品到购物车前,请先完成当前购物车内的订单结算。</p>';
    }
    return $button_html;
}

使用方法

  1. 把代码复制到当前主题的functions.php文件末尾,或者用Code Snippets这类自定义代码插件添加(推荐用插件,避免主题更新丢失代码)。
  2. 如果你的主题自定义了Add to Cart按钮的显示位置,可能需要调整代码中钩子的优先级数字(比如30),让提示语显示在原来按钮的位置。

样式自定义(可选)

如果想调整提示语的外观,删掉代码里的内联样式,把下面的CSS加到主题的自定义CSS面板:

.cart-full-alert {
    color: #dc3232;
    font-size: 16px;
    font-weight: 600;
    padding: 12px;
    border: 1px solid #dc3232;
    border-radius: 4px;
    background-color: #fef0f0;
    margin: 10px 0;
}

说明

  • 代码用WooCommerce原生的WC()->cart->is_empty()方法检测购物车状态,准确可靠,支持所有产品类型。
  • 同时覆盖单个商品页和商品列表页,确保顾客在任何商品页面都看不到Add to Cart按钮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:45:34