wp_reset_postdata()とは?
|

今、エビスコムの「WordPressデザインブック HTML5&CSS3準拠」(kindle版)を参考にしながら、サイトを作っている。同氏の「WordPressデザインブック 3.x対応」の紙書籍が、かなり勉強になったので、kindleでも持っておこうと購入した。
しかし、kindle版の方は、SNSでシェアするためのメタデータをOGPで記述する方法にかなりのページを割いてたりして、まったく別アプローチをしている本だった。
サンプルコードの中に何度か、wp_reset_postdata()という関数が出てきたので気になり、「WordPress Web開発逆引きレシピ」をパラパラ見てたら、こんな事が書いてあったので要約をメモしておく。
ページの種類に応じて適切な投稿を読み込むためにWordPress内部で実行されるメインクエリに対し、独自にWP_Queryクラスを使って行うクエリをサブクエリと呼び、サブクエリで読み込んだ投稿を出力するループをサブループと呼ぶ。
WP_Queryクラスを使って様々な投稿等を読み込んで処理するには、まずWP_Queryクラスのオブジェクトを作成する。
$変数名 = new WP_Query(パラメータ);
パラメータには、読み込みたい投稿等の条件を指定するための連想配列を渡す。なお、WP_Queryオブジェクトでの処理が終わったら、wp_reset_postdata関数を実行して、メインループの状態に戻す。
サブループの一般的な組み方の例。
<?php $my_query = new WP_Query(パラメータ); if($my_query->have_posts()): $wp_query->the_post(); ?> ?> <? while ($wp_query->have_posts()): $wp_query->the_post(); ?> 投稿の情報を出力する処理 <?php endwhile; ?> <?php else: ?> 条件に合う投稿がなかった時の処理 <?php endif; wp_reset_postdata(); ?>