是否可以使用Wordpress中的标准内置工具wp_query
是否仅返回查询的计数?
现在,我有一个查询,它有几个meta\\u查询,但我唯一感兴趣的是查询的实际计数。
我知道我可以使用found\\u posts属性,但查询本身会产生很大的查询开销SELECT *
从而返回整个对象。
我可以使用$wpdb
但如果可能的话,我想使用内置查询系统。。
我一直在SE和Google上寻找这个问题的答案,但结果一无所获。
如果我解释得不好,请让我知道,我会尽量详细说明。
干杯
最合适的回答,由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";