[WordPress]DBが分かる人に$wp_queryと$wp_the_queryの違いを説明する

WordPressでは、クエリ結果(≒表示すべき記事の情報)を、$wp_queryと$wp_the_queryの2つの変数で管理しています。
この2つの違いは下記のとおりです。

メインクエリの結果:$wp_the_query
現在処理しているクエリ結果: $wp_query

具体的には以下のプログラムのコメントのような感じで、$wp_queryの値が変わっていきます。

// カテゴリ1の記事最新5件を検索
// この時点では、$wp_the_queryと$wp_queryの内容は同じ
query_post('cat=1&order=DES&number=1'); 

// 取得した記事をすべて処理するまで繰り返し
wihle( have_posts() ) {
    // 検索した結果からデータを1レコードフェッチして、作業中記事を$wp_queryグローバル変数にセット
    // この時点で、$wp_the_queryと$wp_queryの内容は異なる。
    the_post();

    // セットされた$wp_queryグローバル変数より、記事のタイトルを取得する
    echo the_title();
}

wp_reset_query();   // wp_queryの内容を$wp_the_queryに戻す

普通だと$wp_query = the_post();といった形で、DBからfetchしたレコードを戻り値として取るところですが、the_post()がfetchした結果をグローバル変数に保存していると考えると分かりやすいです。

関連記事

コメントを残す

メールアドレスが公開されることはありません。