説明
wp_reset_query() は、query_posts() で変更したメインクエリを元に戻す関数です。
基本構文
wp_reset_query(): void
引数
引数はありません。
戻り値
戻り値はありません。
使い方(サンプル)
query_posts( 'posts_per_page=3' );
// ループ処理
wp_reset_query();
注意点
query_posts()自体が非推奨に近い使い方のため、通常は使いません。代わりにpre_get_postsフックを使います。
実務での使いどころ
query_posts()を使った後に、元のメインクエリに戻すとき。- 古いテーマを修正するとき、
query_posts()が使われていた箇所の後始末。
よくあるミスと対処
WP_Queryのサブクエリの後に、これを使っている。サブクエリの後はwp_reset_postdata()で足りる。- そもそも
query_posts()を使っている。メインクエリを変更するときは、pre_get_postsフックを使う。
NG例
query_posts( 'posts_per_page=3' );
while ( have_posts() ) {
the_post();
}
// 元に戻していない
OK例
query_posts( 'posts_per_page=3' );
while ( have_posts() ) {
the_post();
}
wp_reset_query(); // 新しく作るなら、pre_get_posts を使う
使い分け早見表
| 場面 | 使うもの |
|---|---|
| query_posts のあと | wp_reset_query() |
| WP_Query のあと | wp_reset_postdata() |
| メインクエリの条件を変えたい | pre_get_posts フック |
関連項目
wp_reset_postdata()、query_posts()
公式リファレンス:wp_reset_query() | Function | WordPress Developer Resources

コメント