簡體   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