繁体   English   中英

使用WordPress插件编码标准和Php Codesniffer验证我的插件时出现“posts_per_page”= -1时出错

[英]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" />

PHPCS WP 1.0版的更新:

版本1.0不再包含WordPress.VIP策略,因此如果升级它可能不会看到此错误。 请参阅changelog

只需设置'posts_per_page'=> PHP_INT_MAX,

这就是我所做的,PHPCS现在很高兴:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM