WooCommerce 2.8:如何统计特定分类下的在售商品数量?
特定分类下在售商品数量统计方案(WooCommerce 2.8)
嘿,我来帮你搞定这个问题!你已经掌握了全店在售商品的统计方法,那针对特定分类的情况,咱们可以用WordPress和WooCommerce自带的工具来实现,下面给你两种适配WooCommerce 2.8版本的靠谱方案:
方法一:使用WP_Query直接查询(灵活可控)
这种方法适合需要自定义更多查询条件的场景,比如是否包含子分类、是否过滤库存状态等:
// 第一步:获取"电脑"分类的Term对象(也可以直接用分类ID,如果你知道的话) $computer_category = get_term_by('name', '电脑', 'product_cat'); if ($computer_category) { // 构建查询参数 $query_args = array( 'post_type' => 'product', 'post_status' => 'publish', // 只统计已发布的商品 'posts_per_page' => -1, // 查询所有符合条件的商品,不限制数量 'tax_query' => array( array( 'taxonomy' => 'product_cat', 'field' => 'term_id', 'terms' => $computer_category->term_id, 'operator' => 'IN', 'include_children' => true // 可选:设为false则不统计子分类下的商品 ) ), // 可选:如果需要排除缺货商品,添加以下meta_query 'meta_query' => array( array( 'key' => '_stock_status', 'value' => 'instock', 'compare' => '=' ) ) ); // 执行查询 $product_query = new WP_Query($query_args); // 获取符合条件的商品总数 $on_sale_count = $product_query->found_posts; // 输出结果(或者按需返回) echo $on_sale_count; }
方法二:使用WooCommerce内置函数wc_get_products(简洁高效)
WooCommerce 2.8已经支持wc_get_products函数,这是官方推荐的商品查询方式,参数更直观,代码更简洁:
// 构建查询参数 $product_args = array( 'status' => 'publish', // 只统计已发布商品 'category' => array('电脑'), // 可以传分类名称、slug或者ID数组 'return' => 'ids', // 只返回商品ID,减少内存占用,提升性能 // 可选:过滤库存状态,只统计有货的商品 'stock_status' => 'instock' ); // 获取符合条件的商品ID数组 $products = wc_get_products($product_args); // 统计数组长度就是商品数量 $on_sale_count = count($products); // 输出结果 echo $on_sale_count;
注意事项
- 如果你的分类是用slug识别的,把
get_term_by的第一个参数改成'slug'即可,比如get_term_by('slug', 'computer', 'product_cat') - 如果你不需要考虑库存状态,直接去掉
meta_query(方法一)或stock_status(方法二)参数即可,统计的就是所有已发布的商品数量
内容的提问来源于stack exchange,提问作者mrbangybang
相关产品推荐
相关产品推荐

