如何统计WooCommerce特定产品分类下的评论总数
如何统计WooCommerce特定产品分类下的评论总数
嗨,我完全懂你的困扰——想用get_comments()直接统计特定产品分类的评论总数,但发现这个函数根本不支持分类查询,对吧?确实,get_comments()的参数体系是围绕评论本身设计的,没法直接关联到关联产品的分类属性。不过我们可以换个思路:先拿到目标分类下的所有产品ID,再用这些ID过滤评论,就能得到精准的总数了。
直接给你调整后的代码,里面加了详细注释,你可以按需修改:
function rnr_colors_review_count() { // 替换成你要统计的产品分类slug,或者用分类ID的话看下面注释 $target_category = 'your-category-slug'; // 第一步:获取目标分类下的所有产品ID $products = get_posts(array( 'post_type' => 'product', 'posts_per_page' => -1, // 一次性获取该分类下所有产品 'tax_query' => array( array( 'taxonomy' => 'product_cat', // WooCommerce产品分类的默认taxonomy 'field' => 'slug', // 如果用分类ID,改成'term_id' 'terms' => $target_category, // 用ID的话就填数字,比如123 'include_children' => true, // 要不要包含子分类的产品,默认true ) ), 'fields' => 'ids' // 只返回产品ID,减少查询负载,更高效 )); // 如果分类下没有产品,直接显示0 if (empty($products)) { echo 'Total Comments= 0'; return; } // 第二步:用产品ID数组筛选并统计评论数 $args = array( 'post_type' => 'product', 'status' => 'approve', // 只统计已审核的评论,要包含待审的改成'hold'或'all' 'count' => true, 'post__in' => $products // 指定只统计这些产品的评论 ); $comments_count = get_comments($args); echo 'Total Comments= ' . $comments_count; }
几个关键的小提示:
- 如果你的分类是用ID管理的,把
tax_query里的field改成term_id,terms填对应的分类ID数字就行 include_children参数如果设为false,就只会统计当前分类下的直接产品,不会包含子分类的- 如果需要统计所有状态的评论(包括待审核、垃圾评论),把
status改成'all'就行
备注:内容来源于stack exchange,提问作者AJD
相关产品推荐
相关产品推荐

