如何统计分配给特定类别的帖子数量?

时间:2018-03-21 作者:NielsPilon

我有以下代码来计算特定类别中的帖子数量。根据它返回的帖子数量,它应该做些什么。

$args = array(
    \'posts_per_page\' => -1,
    \'post_type\' => \'post\',
    \'cat\' => \'9\',
);

$count_query = new WP_Query( $args );
$count = $count_query->post_count;

if ( $count >= 3) {

// do something     

}
此代码有效,但仅当我包括posts_per_page 在我的阵列中。有人能解释一下为什么会这样吗?

我希望代码在没有post_per_page 也相反,它返回一个0作为结果。

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

好这很容易解释。。。

问题解释

您的代码不算数-它检索与给定查询匹配的帖子(您查询的帖子属于ID为9的类别)。如果您没有提供posts_per_page param,则使用默认值(在设置中设置的值)。另一方面,如果设置posts_per_page-1, 然后,您将获得与给定查询匹配的所有帖子。但这样做是一个非常糟糕的主意——如果有数千篇帖子,那么您将从DB中检索所有帖子,只是为了统计它们。

解决方法之一是检查found_posts 而不是post_count. 第一个是“找到的与当前查询参数匹配的帖子总数”,第二个是“显示的帖子数量”。

$args = array(
    \'post_type\' => \'post\',
    \'cat\' => 9,
);

$count_query = new WP_Query( $args );
$count = $count_query->found_posts;

if ( $count >= 3) {
    // do something
}
更好的解决方案,但。。。有更有效的方法来统计给定类别中的帖子数量。。。

$category = get_category( 9 );  // <- change the ID of category

if ( $category->category_count >= 3 ) {
    // do something
}
当然,您还应该检查给定的类别是否存在,等等。

结束

相关推荐

Load categories with ajax

我没有任何链接或演示,因为我在本地工作我有不同类别的新闻帖子。我想将类别显示为按钮。当您单击一个类别时,我想使用ajax加载这些帖子,这样就不会重新加载页面。类别按钮 <ul> <?php $cat_args = array( \'orderby\' => \'name\', \'order\' => \'ASC\',