問題描述
我一直在研究 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。
