1. TOP
  2. web
  3. wordPress
  4. wp_reset_postdata()とは?

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(); ?>