You need to enable JavaScript to run this app. WooCommerce订单如何按产品分类统计各分类商品订购总数量
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce订单如何按产品分类统计各分类商品订购总数量

核心遗漏的关键环节

  • 最核心的统计逻辑错配:原代码用count($items)算的是分类下的订单条目总数,完全没有读取每个订单项对应的实际购买数量。WooCommerce 的订单项本身就携带购买数量字段,通过$item->get_quantity()就能拿到当前条目对应的购买件数——比如用户买了2份芝士汉堡,这个值就是2,原代码完全没利用这个字段,自然算出来的结果和实际订购数对不上。
  • 分类聚合的数组结构有缺陷:原代码只把订单项本身往分类数组里存,没有预留分类总数量的存储位置,后续渲染时要么得临时遍历明细累加数量,要么直接用错条目数当结果。
  • 边界处理没做:原代码直接取分类数组的第一个元素$terms[0],既没判断get_the_terms的返回值是不是报错、是不是空值,也没兼容单个产品绑定多个分类的场景,后续很容易出现无分类产品报错、多分类商品漏统计的问题。
  • 标题逻辑混了无关字段:原代码输出的$term->count是该分类在全店铺的在售商品总数,根本不是当前订单内的统计值,和你要的订单维度统计完全没关系。

修正后的可直接使用的代码

$categories = [];
foreach ($order->get_items() as $item) {
  $product_id = $item->get_product_id();
  // 读取当前订单项的实际购买数量
  $item_quantity = $item->get_quantity();
  
  // 保留你原本的meta过滤逻辑
  $meta = $item->get_meta_data();
  $meta = array_filter($meta, function ($meta_obj) {
    return !in_array($meta_obj->key, Order::getHiddenKeys());
  });

  $terms = get_the_terms($product_id, 'product_cat');
  // 跳过无分类、或分类查询出错的异常情况
  if (is_wp_error($terms) || empty($terms)) continue;

  // 兼容单产品绑定多分类的场景,每个关联分类都累加对应数量
  foreach ($terms as $term) {
    $cat_id = $term->term_id;
    // 初始化分类的存储结构
    if (!isset($categories[$cat_id])) {
      $categories[$cat_id] = [
        'total_quantity' => 0,
        'items' => []
      ];
    }
    // 把当前条目的购买数量累加到对应分类的总计数里
    $categories[$cat_id]['total_quantity'] += $item_quantity;
    // 存下该分类下的商品明细,后续可以直接遍历展示
    $categories[$cat_id]['items'][] = $item;
  }
}

// 渲染每个分类的展示区块
foreach($categories as $category_id => $category_data){
  $term = get_term_by( 'id', $category_id, 'product_cat' );
  if (!$term) continue;
?>
  <tr>
    <td colspan="3">
      <h4>
        <?php 
          echo $term->name.' × '.$category_data['total_quantity'];
        ?>
      </h4>
    </td>
  </tr>
  <!-- 后续在此处循环渲染 $category_data['items'],即可展示对应分类下的所有商品明细 -->
  <?php
}

按照这个逻辑运行的话,你举的例子:分类下有「芝士汉堡 ×2」「汉堡 ×1」两个条目,最终标题会正确显示「汉堡类 ×3」,完全符合你要的统计效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 19:15:05