問題描述
閲讀一些關於 query_reset_postdata 和 query_reset_query 的東西讓我困惑。例如:
以上説明使用”separate queries” 時應該只使用 query_reset_postdata()。在例 2 中有一個評論:
WP_Query( $args ) = wp_reset_postdata();
和
query_posts ( $args ) = wp_reset_query();
真的不要使用 wp_reset_query,因為你不應該使用 query_posts!
在 WP Codex 中,它聲明您應該在自定義循環後使用 wp_reset_query()(第一個例子)http://codex.wordpress.org/Function_Reference/wp_reset_query
那鱈魚是錯的嗎?
最佳解決方案
兩者之間的區別在於
-
wp_reset_query()– 確保主查詢已重置為原始主查詢 -
wp_reset_postdata()– 確保全局$post已經恢復到主查詢中的當前帖子。
實際上,看看 source,你會看到 wp_reset_query()調用 wp_reset_postdata()。兩者之間唯一的區別就是這一行:
$GLOBALS['wp_query'] = $GLOBALS['wp_the_query'];
(wp_reset_query()) 。所以 wp_reset_query()只有當這兩個全局變量不同時才需要,只有在 query_posts()被用於某個地方才會發生。
我什麼時候應該使用它們?
簡單的説:
-
wp_reset_postdata()– 每次定製後立即WP_Query() -
wp_reset_query()– 每循環後立即使用query_posts()
我應該使用 wp_reset_query
嗯,是的,但只有使用 query_posts()才需要。正如你所指出的,你不應該使用 query_posts()。所以如果您沒有使用 query_posts(),那麼就不用調用 wp_reset_query()(而不是 wp_reset_postdata()) 。
簡而言之,這不是你不應該使用 wp_reset_query()而不是 wp_reset_postdata(),這是你不應該需要!
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。