説明
wp_reset_postdata() は、サブループ後に、グローバル変数 $post をメインクエリの状態に戻す関数です。
基本構文
wp_reset_postdata(): void
引数
引数はありません。
戻り値
戻り値はありません。
使い方(サンプル)
$q = new WP_Query( array( 'posts_per_page' => 3 ) );
while ( $q->have_posts() ) {
$q->the_post();
the_title();
}
wp_reset_postdata();
注意点
WP_Queryで独自ループを回したあとには必ず呼びます。query_posts()の後始末にはwp_reset_query()を使います。
実務での使いどころ
WP_Queryのループが終わった後に、メインクエリの投稿情報に戻すとき。get_posts()とsetup_postdata()を使った後に、元に戻すとき。- サイドバーやフッターなど、ループの後ろの表示を正しく保つとき。
よくあるミスと対処
- サブクエリのループの後に呼ばず、後続の
the_title()などが、サブクエリの最後の投稿の情報になる。 query_posts()を使った後に、これで戻そうとしている。query_posts()にはwp_reset_query()を使う。- ループの途中で呼んでいる。ループが完全に終わってから呼ぶ。
NG例
$q = new WP_Query( $args );
while ( $q->have_posts() ) {
$q->the_post();
the_title();
}
// 元に戻していない
OK例
$q = new WP_Query( $args );
while ( $q->have_posts() ) {
$q->the_post();
the_title();
}
wp_reset_postdata();
使い分け早見表
| 場面 | 使うもの |
|---|---|
| WP_Query のあと(get_posts は、setup_postdata を使ったとき) | wp_reset_postdata() |
| query_posts のあと | wp_reset_query() |
関連項目
wp_reset_query()、setup_postdata()、WP_Query
公式リファレンス:wp_reset_postdata() | Function | WordPress Developer Resources

コメント