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

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

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

関連記事

【PHP】DBライブラリ 「idiorm」

フレームワークを使うには簡単すぎる、かといってPDOを使ってガリガリ書くのは面倒。 そんな時に役立つライブラリが「idiorm」です。(なんて読むんでしょうか?) GitHubで公開しています。 ht …

【PHP】ビルトインウェブサーバーで楽々テスト環境

teratailで質問に答えるようになったら、以外にサーバー立てずにテストして、ローカル制限に引っかかっている人が多いので、簡単に立てられるローカルサーバーの構築方法を書いておこうと思います。 まず、 …

PHPからsyslogを書く

忘備録です。 PHPでシステム回りを作っているんですが、syslogに出力出来たらなー、と思っていました。 調べたら簡単♪ function logger($mes) { exec("/bi …

【PHP】 Macからの日本語名ファイルを正しく扱う

久しぶりに仕事ではまりました。 ファイルをアップロードして、その日本語名を利用するシステムなのですが、Macも含まれます。 それで、会社からMac miniを借りてダウンロード、アップロード実験をして …

【qmail】携帯キャリアのメールに添付を削除して転送する

qmailでメールを携帯に転送して、メール通知に使っておられる方は結構多いんじゃないでしょうか。 ただ、大きなファイルが添付されていると、エラーメールが送信元に戻ってしまいます。 つまり、クライアント …