説明
WP_Query::the_post は、サブループで、次の投稿に進めるメソッドです。
基本構文
$query->the_post()
引数
引数はありません。
戻り値
戻り値はありません。
使い方(サンプル)
while ( $q->have_posts() ) {
$q->the_post();
the_title();
}
注意点
- グローバルの
$postが更新され、the_title()などが使えるようになります。 - 終わったら
wp_reset_postdata()を呼びます。
実務での使いどころ
new WP_Queryで作った、一覧のループの中で、次の投稿を、取り出すとき。
よくあるミスと対処
- メインクエリ用の、
the_post()を使っている。サブクエリでは、$query->the_post()を使う。 - ループのあとに、
wp_reset_postdata()を呼ばない。 have_posts()と、$query->have_posts()を、取り違える。
NG例
$q = new WP_Query( $args );
while ( $q->have_posts() ) {
the_post(); // メインクエリの the_post() で、無限ループになる
}
OK例
$q = new WP_Query( $args );
while ( $q->have_posts() ) {
$q->the_post();
the_title();
}
wp_reset_postdata();
使い分け早見表
| 場面 | 使うもの |
|---|---|
| メインクエリのループ | the_post() |
| サブクエリのループ | $query->the_post() |
| サブクエリのあとに、元に戻す | wp_reset_postdata() |

コメント