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

如何修改WooCommerce的get_cart_contents_count()排除指定商品分类计数

WooCommerce购物车计数排除指定商品分类的修复方案

原代码失效原因

  • has_term() 函数未传入商品ID参数时,默认读取当前页面全局文章的分类属性,无法判断购物车商品的分类,条件判断不生效。
  • WC()->cart->get_cart_contents_count() 会返回购物车所有商品的总数量,不会自动过滤指定分类的商品,外层加条件无法修改该方法的统计逻辑。

正确实现代码

if ( WC()->cart ) {
    $exclude_cats = array('set'); // 填写要排除的商品分类别名,可添加多个
    $items_count = 0;
    $min_count   = 6;
    
    // 遍历购物车商品逐个判断分类
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        $product_id = $cart_item['product_id'];
        // 仅统计不属于排除分类的商品
        if ( ! has_term( $exclude_cats, 'product_cat', $product_id ) ) {
            // 按购买数量累加,若要统计商品种类数改为 $items_count += 1 即可
            $items_count += $cart_item['quantity'];
        }
    }
    
    // 此处保留你原有的后续判断逻辑即可
}

可选调整说明

  • 若需要统计商品种类数(同一款商品买多件仅算1次),将累加逻辑替换为$items_count += 1即可。
  • 若你给商品变式单独设置了分类,需要判断变式的分类属性,将$product_id = $cart_item['product_id'];替换为$product_id = $cart_item['data']->get_id();即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:12:02