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

WooCommerce设置:限制购物车仅可添加指定4款产品中的一款

实现WooCommerce指定产品互斥加入购物车的方案

嗨,这个需求很好解决,咱们直接用WooCommerce自带的钩子函数就能实现,不需要额外装插件,代码也不复杂。下面是具体的实现步骤和代码:

核心代码实现

你可以把这段代码添加到当前激活主题的functions.php文件底部,或者创建一个自定义插件来存放(推荐后者,避免主题更新丢失代码):

add_filter( 'woocommerce_add_to_cart_validation', 'restrict_specific_products_to_single_in_cart', 10, 3 );
function restrict_specific_products_to_single_in_cart( $passed, $product_id, $quantity ) {
    // 定义需要互斥的产品ID集合,就是你提到的1、2、3、4
    $restricted_product_ids = array( 1, 2, 3, 4 );
    
    // 先判断当前要添加的产品是否属于互斥列表
    if ( in_array( $product_id, $restricted_product_ids ) ) {
        // 遍历购物车里已有的所有商品
        foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
            $cart_product_id = $cart_item['product_id'];
            // 如果购物车里已经有互斥列表里的其他产品,就阻止添加
            if ( in_array( $cart_product_id, $restricted_product_ids ) && $cart_product_id != $product_id ) {
                $existing_product = wc_get_product( $cart_product_id );
                // 弹出错误提示,提示内容可以根据你的需求修改
                wc_add_notice( sprintf( '您的购物车中已有「%s」,同一时间仅能添加这4款产品中的一款,请先移除现有产品再尝试添加。', $existing_product->get_name() ), 'error' );
                $passed = false;
                break;
            }
        }
    }
    
    return $passed;
}

代码逻辑说明

  • 我们用woocommerce_add_to_cart_validation这个钩子,它会在产品加入购物车前触发验证,返回true允许添加,false则阻止。
  • 首先定义了互斥产品的ID数组,你可以随时修改这里的ID来调整范围。
  • 只有当用户添加的是互斥列表里的产品时,才会触发检查逻辑,不会影响其他产品的正常添加。
  • 如果检测到购物车里已经有互斥列表中的其他产品,就会弹出错误提示,并且阻止当前产品加入购物车。

额外提示

  • 错误提示的文字可以根据你的店铺风格自定义,比如改成更口语化的表述。
  • 如果担心主题更新丢失代码,建议创建一个简单的自定义插件:新建一个PHP文件,开头加上插件声明(比如/* Plugin Name: 产品互斥购物车限制 */),然后把上面的代码放进去,上传到wp-content/plugins/目录,然后在后台启用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:07:46