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

WooCommerce购物车单个可下载产品限制功能异常修复求助

修复WooCommerce购物车仅限制单个可下载商品的代码问题

原代码的问题在于没有区分可下载商品和普通商品,只要商品类型、可下载状态一致且非虚拟商品就阻止添加,导致普通实体商品也无法批量加入购物车。以下是修复后的代码,仅对可下载商品做单个限制,普通商品可正常添加多个:

add_filter( 'woocommerce_add_to_cart_validation', 'only_one_downloadable_product_allowed', 10, 3 );
function only_one_downloadable_product_allowed( $passed, $product_id, $quantity ) {

    $product = wc_get_product( $product_id );
    
    // 仅当当前添加的是可下载商品时,才执行限制逻辑
    if ( $product->is_downloadable() ) {
        foreach ( WC()->cart->get_cart() as $cart_item ) {
            // 检查购物车中是否已存在可下载商品
            if ( $cart_item['data']->is_downloadable() ) {
                wc_add_notice( __( "购物车中只能存在一个可下载产品。", "woocommerce" ), 'error' );
                return false;
            }
        }
    }

    return $passed;
}

修改说明:

  • 新增判断:只有当前要添加的商品是可下载商品时,才触发限制检查
  • 简化逻辑:直接检查购物车中是否已有可下载商品,无需额外判断商品类型或虚拟属性
  • 普通商品不受影响:非可下载的实体商品可以正常多次添加到购物车

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:08:16