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

在Woocommerce中设置特定产品/分类的最小购买数量

解决WooCommerce特定产品购物车最小购买数量的问题

嘿,我来帮你搞定这个需求!你要实现的是让购物车里的产品a、b、c每个都至少买2件才能完成结账,否则弹出错误提示对吧?光靠前端的数量输入限制还不够,得同时加上后端的购物车校验,防止用户绕过前端限制。下面是完整的解决方案:

1. 核心代码实现

把这段代码添加到你的主题functions.php文件里,或者用自定义代码插件(比如Code Snippets)来添加,这样更安全,不会因为主题更新丢失代码:

// 定义需要设置最小数量的产品(替换成你的产品ID或SKU)
$target_product_ids = array( 'a', 'b', 'c' ); // 如果用ID的话就换成数字数组,比如array(123,456,789)

// 1. 设置前端数量输入框的最小值
add_filter( 'woocommerce_quantity_input_min', 'set_target_products_min_quantity_input', 10, 2 );
function set_target_products_min_quantity_input( $min, $product ) {
    global $target_product_ids;
    
    // 检查当前产品是否在目标列表里(支持SKU或ID匹配,根据你的需求调整)
    if ( in_array( $product->get_sku(), $target_product_ids ) || in_array( $product->get_id(), $target_product_ids ) ) {
        $min = 2; // 设置最小数量为2
    }
    return $min;
}

// 2. 结账前验证购物车中的目标产品数量
add_action( 'woocommerce_check_cart_items', 'validate_target_products_min_quantity' );
function validate_target_products_min_quantity() {
    global $target_product_ids;
    $has_error = false;
    
    // 遍历购物车中的每个商品
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        $product = $cart_item['data'];
        $quantity = $cart_item['quantity'];
        
        // 检查是否是目标产品,且数量小于2
        if ( ( in_array( $product->get_sku(), $target_product_ids ) || in_array( $product->get_id(), $target_product_ids ) ) && $quantity < 2 ) {
            $has_error = true;
            break; // 只要有一个不符合,就停止检查
        }
    }
    
    // 如果有错误,添加提示并阻止结账
    if ( $has_error ) {
        wc_add_notice( __( 'Minimum order quantity for every item is 2', 'woocommerce' ), 'error' );
    }
}

2. 代码说明

  • 前端数量限制:通过woocommerce_quantity_input_min过滤器,给指定产品的数量输入框设置最小值为2,用户在产品页或购物车页没法直接选1件,提前优化用户体验。
  • 后端购物车校验:用woocommerce_check_cart_items钩子,在用户进入结账页或者更新购物车时,检查所有目标产品的数量,如果有任何一个小于2,就弹出你指定的错误提示,并且直接阻止结账流程。
  • 灵活匹配产品:代码里支持用产品SKU或者ID来匹配目标产品,你可以根据自己的实际情况选择(比如把$target_product_ids换成产品ID数组)。

3. 注意事项

  • 记得把代码里的$target_product_ids替换成你实际的产品a、b、c的SKU或者ID,别直接用示例里的占位符哦!
  • 如果你的产品是变量产品,可能需要稍微调整代码去检查变体的SKU/ID,不过这个基础版本对简单产品完全适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:28:15