query_reset_postdata
とquery_reset_query
についてのいくつかのものを読むことは私を混乱させます。例えば:
上記は "別々のクエリ"を使うときだけquery_reset_postdata()
を使うべきだと述べています。 example2ではコメントがあります:
WP_Query( $args ) = wp_reset_postdata();
そして
query_posts ( $args ) = wp_reset_query();
Query_postsを使用すべきではないので、実際にはwp_reset_query
を使用しないでください。
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()
はこれら2つのグローバルが異なる場合にのみ必要で、query_posts()
がどこかで使用されている場合にのみ発生します。
簡単に言えば:
wp_reset_postdata()
- すべてのカスタムの直後のWP_Query()
wp_reset_query()
- query_posts()
を使った各ループの直後そうです、しかしquery_posts()
を使用した後にのみ必要です。あなたが指摘したように 決してquery_posts()
を使うべきではありません。 query_posts()
を使ったことがないのであれば、(wp_reset_query()
ではなく)wp_reset_postdata()
を呼び出すのは 必要ではありません です。
要するに、wp_reset_query()
の代わりにwp_reset_postdata()
を使うべきではないということではありません。