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

WooCommerce移除购物车商品功能仅SAVOY主题失效,WordPress下如何修复?

问题原因

你的代码在SAVOY主题下失效是以下几个核心原因导致的:

  • SAVOY主题对WooCommerce迷你购物车做了深度自定义,重写了默认woocommerce_before_mini_cart_contents钩子的触发逻辑,你挂载的函数默认不会在SAVOY的迷你购物车渲染流程中执行
  • 原代码只绑定了迷你购物车渲染钩子,没有覆盖SAVOY用AJAX更新购物车的场景,加购后AJAX刷新迷你购物车时你的逻辑不会触发
  • 原代码add_action声明接收2个参数,但实际函数没有对应入参,部分严格PHP配置下会抛出警告阻断执行
修复方案

直接替换原有代码即可,适配SAVOY主题的逻辑如下:

// 同时挂载多个通用触发点,不受主题自定义购物车逻辑影响
add_action( 'woocommerce_before_calculate_totals', 'limit_specific_product_single_quantity', 999 );
add_action( 'woocommerce_before_mini_cart_contents', 'limit_specific_product_single_quantity', 999 );
add_action( 'woocommerce_ajax_added_to_cart', 'limit_specific_product_single_quantity', 999 );

function limit_specific_product_single_quantity() { 
    // 后台非AJAX请求直接跳过,避免干扰后台逻辑
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
    
    $targeted_id = 812;
    $total_quantity = 0;

    // 遍历统计目标商品总数量
    foreach ( WC()->cart->get_cart() as $cart_item ) { 
        if ( $cart_item['product_id'] == $targeted_id ) {
            $total_quantity += $cart_item['quantity'];
        }
    }

    // 数量超过1时移除目标商品
    if ( $total_quantity > 1 ) {
        $product_cart_id = WC()->cart->generate_cart_id( $targeted_id );
        $cart_item_key = WC()->cart->find_product_in_cart( $product_cart_id );
        if ( $cart_item_key ) {
            WC()->cart->remove_cart_item( $cart_item_key );
            // 可选:添加前端提示告知用户限购规则
            wc_add_notice( '该商品仅限购买1件,超出数量已自动移除', 'notice' );
        }
    }
}

适配逻辑说明

  • 新增绑定了WooCommerce核心钩子woocommerce_before_calculate_totals,该钩子是购物车金额计算必触发的核心节点,完全不受主题自定义迷你购物车逻辑影响
  • 新增绑定AJAX加购钩子woocommerce_ajax_added_to_cart,覆盖SAVOY无刷新加购后更新迷你购物车的场景
  • 钩子优先级调整为999,确保你的逻辑在SAVOY的自定义购物车逻辑之后执行,不会被主题默认逻辑覆盖
  • 补充了后台场景判断,避免触发不必要的PHP报错
  • 优化了商品数量统计逻辑,避免购物车存在多个同款商品条目时统计错误

异常排查

如果替换代码后仍未生效,按以下步骤排查:

  • 进入SAVOY主题设置面板,找到WooCommerce相关配置,关闭「迷你购物车静态缓存」选项后测试
  • 如有安装其他购物车自定义、缓存类插件,临时禁用后测试,也可将钩子优先级进一步调整为9999避免被其他逻辑覆盖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:54:00