![](/img/trans.png)
[英]WordPress 404 error with pagination /page/2/ when setting posts_per_page
[英]Error with “posts_per_page” = -1 when verify my plugin with WordPress Plugin Coding Standards And Php Codesniffer
我正在使用wordpress编码标准和php codesniffer验证我的插件,但我不知道如何删除此问题:
Disabling pagination is prohibited in VIP context, do not set
| | `posts_per_page` to `-1` ever.
| | (WordPress.VIP.PostsPerPage.posts_per_page)
我总是使用posts_per_page = -1获取帖子以获取所有帖子,我不知道如何获得所有帖子没有这个。
对于以下所有情况,带有WordPress插件的PHPCS会出现此错误:
'nopaging' => true, // Bad.
'posts_per_page' => 999, // Bad.
'posts_per_page' => -1, // Bad.
为什么? 基本上,如果您禁用分页,那么如果查询有可能返回比服务器(或客户端)可以处理的更多结果,则可能会遇到严重的性能问题。
理由似乎在这个GitHub问题中得到了解释:
没有
LIMIT
查询如果查询最终查询了数千个帖子,则使用值设置为-1的
posts_per_page
(或numberposts
)或不合理的高数字或将nopaging
设置为true
可能会导致扩展问题。您应始终获取尽可能少的数字,仍然可以获得您认为可接受的结果数。 想象一下,您的网站会随着时间的推移而增长,包含10,000个帖子。 如果为
posts_per_page
指定-1,posts_per_page
每次查询运行时都将进行posts_per_page
查询并获取所有10,000个帖子,这将破坏您网站的性能。 如果你知道你永远不会有超过15个帖子,那么将posts_per_page设置为15.如果你认为你可能有超过15个你想要显示但怀疑它有超过100个,请设置限制为100.如果它远远高于此值,您可能需要重新考虑页面架构。
如果您想阻止PHPCS抱怨此问题,请修复代码以开始使用分页,或者通过在phpcs.xml
文件中包含此代码来禁用这些特定phpcs.xml
:
<exclude name="WordPress.VIP.PostsPerPage.posts_per_page_nopaging" />
<exclude name="WordPress.VIP.PostsPerPage.posts_per_page_numberposts" />
版本1.0不再包含WordPress.VIP
策略,因此如果升级它可能不会看到此错误。 请参阅changelog 。
只需设置'posts_per_page'=> PHP_INT_MAX,
这就是我所做的,PHPCS现在很高兴:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.