runoops.com

WP_Query 如何限制查询数量

How to limit the number of posts that WP_Query gets?

WordPress WP_Query 如何限制查询数量

解决方法,使用参数posts_per_page。

当使用 WP_Query 运行自定义查询并将限制设置为每页仅获取 5 个帖子时,查询只会检索 5 个帖子,并且该查询将只包含 5 个帖子,但为了分页,WP_Query仍然运行整个数据库并计算与查询条件匹配的所有帖子。

当查看查询的 $found_posts 和 $max_num_pages 属性时,可以看到这一点。举个例子:

共有 20 个帖子,只需要最新的 5 个帖子而无需分页。查询如下所示:

$q = new WP_Query( 'posts_per_page=5' );
  • var_dump( $q->posts ) // 5
  • echo $q->found_posts // 20
  • echo $q->max_num_pages // 4

对于只有几个帖子的网站,这种额外工作的影响很小,但如果正在运行一个包含数百或数千个帖子的网站,这可能会很昂贵。如果您只需要 5 个最新帖子,这是浪费资源。

有一个名为 no_found_rows 的参数,它使用布尔值,可以使用该值在找到需要的 5 个帖子后使查询退出。这将迫使WP_Query在检索查询的帖子数量后不再查找任何计算条件的帖子。这个参数已经内置到get_posts中,这就是为什么get_posts比WP_Query快一点,尽管get_posts使用WP_Query。

总之,如果您不打算在查询中使用分页,那么在查询中使用“no_found_rows=true”总是明智的,以加快速度并节省资源浪费。

最终解决方法:

$q = new WP_Query( 'posts_per_page=5&no_found_rows=true');

Captcha Code

0 笔记

分享笔记

Inline Feedbacks
View all notes