WP_Queryで記事を取得したときはwp_reset_postdataとwp_reset_queryのどっちを使うのか
- 2019.09.08
- Wordpress

WP_Queryで記事を取得してきたときに、ループ終了後に呪文のように書いているwp_reset_postdata()
という関数があります。
さらに、この関数に似ている名前のwp_reset_query()
という関数もあり、どっちを使うのかわからなくなってしまう時があります。
この記事ではどちらの関数を使うのが正解か、さらにそれぞれの関数が何をしているのか調べてみました。
結論
まず結論からいうと、WP_Query()
で記事取得をしたときはwp_reset_postdata()
が正解です。
次にそれぞれの関数が何をしているかというと、どちらの関数もグローバル変数を本来の値にリセットをしているようです。
それぞれ何をリセットしているかというと
wp_reset_postdata()
はグローバル変数の$post
のリセット
wp_reset_query()
はグローバル変数の$wp_query
のリセット
です。
なぜWP_Queryを使ったときは、wp_reset_postdata?
WP_Queryで記事を取得したときは、$post
をループ内で変更して記事の情報を取得しているため、ループ終了後はwp_reset_postdata()
で$post
をメインクエリのものに戻してあげる必要があるということです。
wp_reset_queryはいつ使う?
wp_reset_query()
はいつ使うのかというと、現在非推奨となっているquery_posts()
で記事を取得した場合に使います。
query_posts()
ではグローバル変数の$wp_query
に新たに取得したデータを代入するため、記事を取得した後にリセットをしないと本来期待されている動作ができなくなります。
しかし、先ほども書きましたがquery_posts()
で記事を取得することは現在非推奨なので、自分自身でグローバル変数の$wp_query
を変更することがない限り、wp_reset_query
は使うことがないと思います。
-
前の記事
ウィンドウリサイズ完了時に処理を実行する 2019.09.06
-
次の記事
pre_get_postsを使って表示件数を変更する 2019.09.10