问题描述
我一直在研究 Google 和 WPSE,我唯一重复的是使用不推荐使用的 showposts
。
我熟悉 WP_Query
,我认为如果我将 posts_per_page
设置为我的极限 (即 5),而 nopaging
设置为 true
,则会变成 「Ok,我只给你 5 个帖子」 。但这不行。
我该怎么做?
最佳解决方案
我觉得现在我明白你在做什么当您使用 WP_Query
运行自定义查询并设置限制,每页只能发送 5 个帖子时,查询将仅检索 5 个帖子,该查询将仅保留 5 个帖子,但为了分页,WP_Query
仍然运行整个数据库并对与查询条件匹配的所有帖子进行计数。
当您查看 $found_posts
和 $max_num_pages
属性的查询时可以看到。举个例子:
您有 20 个帖子属于默认帖子类型 post
。你只需要最新的 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'
总是明智之举,可以加快处理速度,节约浪费资源。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。