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

WooCommerce配置数量规则时默认输入值在商品/购物车页不生效

问题说明

需要为站点所有商品统一配置以下数量规则:

  • 最小购买数量(Min Qty):6
  • 最大购买数量(Max Qty):240
  • 数量步长(Quantity Step):6
  • 数量输入框默认值(Input Value):6

当前配置完成后,最小/最大购买限制、数量步长规则均能正常执行,但商品详情页、购物车页的数量输入框默认值未按预期生效,原有实现代码如下:

/**
 * Adjust the quantity input values
 */
add_filter( 'woocommerce_quantity_input_args', 'jk_woocommerce_quantity_input_args', 10, 2 ); // Simple products

function jk_woocommerce_quantity_input_args( $args, $product ) {
    if ( is_singular( 'product' ) ) {
        $args['input_value']    = 6;    
    }
    $args['max_value']  = 240;  // Maximum value
    $args['min_value']  = 6;    // Minimum value
    $args['step']       = 6;    // Quantity steps
    return $args;
}

add_filter( 'woocommerce_available_variation', 'jk_woocommerce_available_variation' ); // Variations

function jk_woocommerce_available_variation( $args ) {
    $args['max_qty'] = 240;         // Maximum value (variations)
    $args['min_qty'] = 6;       // Minimum value (variations)
    return $args;
}
故障原因
  • 原代码仅在商品详情单页的判断分支中设置了简单商品的input_value,未覆盖购物车场景、商品列表页等其他位置的数量输入框
  • 可变商品的钩子回调中缺失input_value(默认值)、step(步长)参数配置,导致可变商品选中规格后默认值、步长不生效
  • 购物车场景下数量输入框默认读取购物车已存储的商品数量,原逻辑未对首次加载的默认值做兼容处理
修复后完整代码

直接替换原有代码为以下内容即可:

/**
 * 全局调整商品数量输入规则(简单商品、所有非购物车场景)
 */
add_filter( 'woocommerce_quantity_input_args', 'jk_woocommerce_quantity_input_args', 10, 2 );
function jk_woocommerce_quantity_input_args( $args, $product ) {
    // 非购物车页面统一设置默认值为6,购物车页面保留用户已选数量
    if ( ! is_cart() ) {
        $args['input_value'] = 6;
    }
    $args['max_value']  = 240;
    $args['min_value']  = 6;
    $args['step']       = 6;
    return $args;
}

/**
 * 调整可变商品的数量规则
 */
add_filter( 'woocommerce_available_variation', 'jk_woocommerce_available_variation', 10, 3 );
function jk_woocommerce_available_variation( $args, $product, $variation ) {
    $args['max_qty']     = 240;
    $args['min_qty']     = 6;
    $args['input_value'] = 6;
    $args['step']        = 6;
    return $args;
}

/**
 * 兼容购物车页数量输入规则
 */
add_filter( 'woocommerce_cart_item_quantity', 'jk_fix_cart_quantity_input', 10, 3 );
function jk_fix_cart_quantity_input( $product_quantity, $cart_item_key, $cart_item ) {
    $product = $cart_item['data'];
    $args = array(
        'input_value' => $cart_item['quantity'] < 6 ? 6 : $cart_item['quantity'],
        'max_value'   => 240,
        'min_value'   => 6,
        'step'        => 6,
    );
    return woocommerce_quantity_input( $args, $product, false );
}
验证说明

代码添加后清空站点缓存、购物车缓存测试:

  • 商品详情页(含简单商品、可变商品选完规格后)数量输入框默认显示6
  • 购物车页新加入的商品默认数量为6,手动修改过的数量会正常保留,同时受最小6、最大240、步长6的规则限制
  • 商品列表页、其他调用数量输入框的位置均会遵循统一规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:27:22