[英]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.