wp_reset_postdata() の使い方|説明・引数・注意点

説明

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

コメント

タイトルとURLをコピーしました