WordPress中$term->count;计算结果是否包含草稿和回收站的文章在内?

在WordPress中,直接使用 $term->count 获取到的文章数量不包含草稿和回收站的文章,它通常只统计已发布的文章。

🔢 分类项计数的默认行为

WordPress的分类系统(如分类目录和标签)中,每个分类项(Term)的 count 值,通常来源于 wp_term_taxonomy 数据库表中的 count 字段。这个数值的统计有以下特点:

  • 默认统计已发布文章:默认情况下,$term->count 只计算状态为 ‘publish’ 的文章。
  • 不包含其他状态:诸如 ‘draft’(草稿)‘pending’(待审)‘trash’(回收站)‘private’(私密) 等状态的文章,在默认情况下不会被计入。

🔍 如何统计其他状态的文章

如果你需要统计特定分类项下处于其他状态的文章数量,可以考虑以下方法:

  1. 使用 WP_Query 进行自定义查询
    你可以利用 WP_Query 类,通过设置 post_statustax_query 参数,来精确查询特定分类项下处于特定状态的文章列表,然后获取其数量。例如,查询某个分类目录下所有草稿文章: $query = new WP_Query( array( 'post_status' => 'draft', 'tax_query' => array( array( 'taxonomy' => 'category', // 这里替换为你的分类法名称 'field' => 'term_id', 'terms' => $term_id, // 这里替换为你的分类项ID ), ), ) ); $draft_count = $query->found_posts; 通过这种方式,你可以灵活地统计包括草稿、待审文章等在内的数量。
  2. 直接使用 wp_count_posts 函数
    wp_count_posts 函数可以用来统计整个网站中不同状态的文章数量,但它无法直接针对某一个特定的分类项进行统计。

简单来说,$term->count 默认只反映已发布文章的数量。如果你的网站内容管理涉及较多草稿或待审核文章,并且你需要将这些状态的文章也纳入统计,那么建议使用 WP_Query 进行自定义查询来获取更符合需求的数量。