We are ACORN!

プログラムやサーバーの設定など、技術的な記事を載せております。

WordPress プログラミング

WordPressのメインループ&サブループ

投稿日:

WordPressのテンプレートを作っていると、ループの構造で混乱してくる人がいます。
ですので、不要なHTMLを除いた、単純な構造を書いておこうと思います。
解説はコメントに書いています。

<?php

// ヘッダーやサイドバーを表示する(今回は割愛)
// get_header();
// get_sidebar();

// -----------------------------------------------------------------------------
// メインループ
// (たとえ記事が一つだけ出るテンプレートでもループを作ることを推奨している)
// -----------------------------------------------------------------------------
if ( have_posts() ) :
  while ( have_posts() ) :
    the_post();     // ループを次に進める。
                    // そして、グローバル変数の$postに投稿をセットする。
                    // 今後のループ内で使うテンプレート関数は、この$postを利用する。

    the_title();    // $postから投稿のタイトルを表示する。
    the_content();  // $postから投稿の本文を表示する。
  endwhile;
else :
  // 通常index.phpか404テンプレートが設定されていれば、ここには来ないはず。
  echo "投稿が見つかりません。";
endif;

// -----------------------------------------------------------------------------
// サブループ
// -----------------------------------------------------------------------------

// 条件を配列に格納
$args = array(
  'category_name'  => 'news',
  'posts_per_page' => 3
);
// 上記の配列に基づいて、WP_Queryオブジェクトを作成
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
  while ( $the_query->have_posts() ) :
    $the_query->the_post(); // サブループを次に進める。
                            // そして、グローバル変数の$postに投稿をセットする。

    the_time('Y.m.j'); // $postから投稿の公開日時をフォーマットして表示する。
    the_permalink();   // $postから投稿のパーマリンクのURLを表示する。
    the_title();       // $postから投稿のタイトルを表示する。
  endwhile;

  wp_reset_postdata();  // サブループを終了し、グローバル変数の$postを
                        // メインループ用に戻す。
endif;

// フッターを表示する(今回は割愛)
// get_footer();

WordPressの「the」が付くテンプレート関数は、$postを元にして、内容を表示したり、取得したりします。

-WordPress, プログラミング


comment

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

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

【HTML5】 FormDataオブジェクトがログに出力されない(出力方法追記)

どうも仕様みたいですね。 どうやっても、無理でした。 隠ぺいされたオブジェクトっていうのも気持ち悪いですね。 それをajaxで送る、っていうのも気持ち悪い。 var fd = new FormData …

さくらのレンタルサーバーのメールをslackに通知する

今までメールを自分で作ったスクリプトで携帯に転送していたんですが、キャリアメールをやめたのでslackにメッセージを投げることにしました。 前提として、プランがスタンダードである必要があります。 何せ …

【PHP】WSL vs. Docker vs. Win32 環境別速度

PHPが複数環境で実行できるようになったので、速度を測定してみました。 マシンスペックは マシン Lenovo Thinkpad E460 プロセッサ Core i5-6200U @ 2.40GHz …

Google Apps Script でWebAPIを作ろう

Google Apps Scriptを使うと簡単にWeb APIを作ることが出来ます。 準備 まず、Google Drive上からApps Scriptを作れるようにしましょう。 ドライブの左上の「新 …

PHP Toolkit のSoapClientが接続できない

クライアントがPHPのバージョンを5.4から5.6にアップデートしたそうです。 (そういう時は前もって連絡ください(怒)) その際、エラーが出るというのです。 ログを見ると、 SoapClientの_ …