是否仅从wp_Query请求返回计数?

时间:2015-02-12 作者:Mestika

是否可以使用Wordpress中的标准内置工具wp_query 是否仅返回查询的计数?

现在,我有一个查询,它有几个meta\\u查询,但我唯一感兴趣的是查询的实际计数。

我知道我可以使用found\\u posts属性,但查询本身会产生很大的查询开销SELECT * 从而返回整个对象。

我可以使用$wpdb 但如果可能的话,我想使用内置查询系统。。

我一直在SE和Google上寻找这个问题的答案,但结果一无所获。

如果我解释得不好,请让我知道,我会尽量详细说明。

干杯

3 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

没有内置函数来实现您想要的功能,至少对于这样复杂的元查询是这样的。如果需要为此使用内置函数,最好是使用WP_Query.

使查询更快,并跳过不需要的返回数组WP_Post 属性,并且因为您只对post count感兴趣,所以可以在参数中的参数中使用以下内容

\'fields\' => \'ids\',
\'no_found_rows\' => true,
这甚至可能比自定义SQL查询快一点WP_Query 也被缓存。

SO网友:cristian.raiber

我知道这已经得到了回答,因为您的问题是基于使用WP_Query, 我的答案可能不太可能,但您也可以尝试使用以下方法:

wp_count_posts( $type, $perm );
在哪里$type = post_type (post, page, \'custom-post-type-slug\') 在哪里$perm = 要包含当前用户可读的私人帖子,请设置为“可读”

我过去曾成功地使用过此功能:)

wp_count_posts(\'post\')->publish -> returns only the count for published posts.

SO网友:Chad Reitsma

如果您需要一个完整的示例-基于Pieter的注释:

$query = new WP_Query(
    array(
        \'post_type\' => \'post_type_goes_here\',
        \'posts_per_page\' => -1,
        \'no_found_rows\' => true,
        \'fields\' => \'ids\',
    )
);

if ($query->have_posts()) echo count($query->posts);
else echo "0";

结束