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

如何限制Woocommerce购物车中免费小样类商品的总最大下单数量

WooCommerce免费小样订单总量限制解决方案

你提出的两种方案都可以落地,适配不同场景:

  • 方案1:限制订单内所有£0商品总数量不超过5
    实现最简单,仅适用于店铺内没有小样之外的其他0元商品的场景,无需额外调整现有产品配置。
  • 方案2:绑定专属配送类后限制该类商品总数量不超过5
    精度更高,适合店铺内同时存在其他免费活动商品的场景,不会误拦截非小样类的免费商品,更推荐使用。

代码实现(无额外插件成本,推荐)

将以下代码添加到你的店铺主题functions.php文件,或者自定义功能插件中即可生效:

// 限制免费小样单订单最高领取数量
add_action( 'woocommerce_check_cart_items', 'wc_limit_free_samples_total' );
function wc_limit_free_samples_total() {
    // 配置项:替换为你的免费小样配送类slug、最高允许领取数量
    $sample_shipping_class = 'free-samples';
    $max_sample_count = 5;
    $current_sample_count = 0;

    // 统计购物车中小样总数量
    foreach ( WC()->cart->get_cart() as $item ) {
        $product = $item['data'];
        $item_shipping_class = get_term( $product->get_shipping_class_id(), 'product_shipping_class' )->slug;
        if ( $item_shipping_class === $sample_shipping_class ) {
            $current_sample_count += $item['quantity'];
        }
    }

    // 超出限制时抛出错误
    if ( $current_sample_count > $max_sample_count ) {
        wc_add_notice( sprintf( '单订单最多可领取%s份免费小样,当前已选%s份,请调整后提交', $max_sample_count, $current_sample_count ), 'error' );
    }
}

如果要使用方案1的逻辑,只需要把统计部分的判断条件替换为价格判断即可:

if ( $product->get_price() == 0 ) {
    $current_sample_count += $item['quantity'];
}

插件实现(无代码需求)

如果不方便修改代码,可以选择支持按配送类/商品类型限制购物车总量的WooCommerce数量管理插件,在后台配置对应规则即可,和你当前在用的Min/Max quantity插件功能兼容,不会冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:00:04