我可以在不进行查询的情况下计算匹配项吗?

时间:2017-05-08 作者:Ahrengot

我试图统计给定查询的结果,但实际上我并不需要这些帖子,所以我试图找出是否有一种方法可以在不查询的情况下统计帖子。类似于https://codex.wordpress.org/Function_Reference/wp_count_posts

我正在按元键/值统计帖子,所以wp_count_posts() 行不通。

以下是我目前正在做的事情:

$query = new WP_Query(array(
  "post_type" => \'my-post-type\',
  "posts_per_page" => 0,
  "meta_key" => "my_custom_key",
  "meta_value" => "some_value",
));

echo $query->found_posts;

2 个回复
SO网友:Mark Kaplun

非完美的解决方案是尽量减少查询所携带的信息量和副作用。这可以通过只请求post ID而不填充任何缓存来实现。

您的查询应该类似于

$query = new WP_Query(array(
  ...
  \'fields\' => \'ids\',
  \'cache_results\' => false,
  \'update_post_meta_cache\' => false,
  \'update_post_term_cache\' => false,
));
因此,您仍然获得了太多的信息—一个整数数组,而不是一个整数数组,但由于DB在任何情况下都必须对其进行检查,因此主要的开销可能是传输它的时间,如果您不希望有1000篇帖子与您的查询相匹配,那么这应该足够了。

与尝试找出所有必需的联接并编写适当的SQL相比,我更喜欢这种方法的原因是,它比SQL语句更易于读取和修改。仍然需要对其原因进行良好的评论。

SO网友:Emin Rahmanov

您将posts\\u per\\u page设置为0值。所有帖子集的posts\\u per\\u页面-1或其他正数

$query = new WP_Query( array(
  "post_type"       => \'my-post-type\',
  "posts_per_page"  => -1,
  "meta_key"        => "my_custom_key",
  "meta_value"      => "some_value",
) );

echo $query->found_posts;

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post