如何统计指定分类下各作者文章数及为WP查询添加neuws分类过滤
代码修改方案
核心逻辑
原来的count_user_posts()函数仅支持按文章类型统计全部分类的发文数,不支持分类过滤,因此我们替换为带分类参数的自定义统计逻辑,修改后的完整代码如下:
<?php // 统计各作者在neuws分类下的文章发布数 // 定义分类别名(如果neuws是拼写错误,可替换为实际的分类别名,比如news) $target_category_slug = 'neuws'; // 获取所有有已发布文章的作者 $authorArgs = array( 'orderby' => 'ID', 'has_published_posts' => array('post'), ); $pecheAuthors = get_users($authorArgs); // 遍历每位作者统计指定分类下的文章数 foreach($pecheAuthors as $user){ // 构造查询参数,筛选当前用户、指定分类的已发布文章 $user_posts = get_posts(array( 'post_type' => 'post', 'author' => $user->ID, 'category_name' => $target_category_slug, 'posts_per_page' => -1, 'post_status' => 'publish' )); $post_count = count($user_posts); // 只显示有对应分类文章的作者,不需要的话可以删掉这个判断 if($post_count == 0) continue; // 输出统计结果 echo '<font color="#f00;"><b>'; echo $post_count; echo '</b></font>'; echo ' journees de pêches pour '; echo '<font color="#f00;"><b>'; echo $user->display_name; echo '</b></font>'; echo '<br />'; } ?>
关键修改说明
- 新增了
$target_category_slug变量统一配置目标分类别名,修改方便 - 用带
category_name参数的get_posts()查询替代原生count_user_posts(),实现分类过滤 - 移除了原代码中冗余无效的
WP_Query逻辑,减少不必要的数据库查询 - 新增可选判断:仅输出在目标分类下有发布文章的作者,不需要展示0篇的作者可以保留该判断,删除即可展示所有作者的统计结果
- 如果需要按分类ID筛选,只需要把
'category_name' => $target_category_slug替换为'cat' => 分类ID数字即可
内容的提问来源于stack exchange,提问作者flexi2202
相关产品推荐
相关产品推荐

