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

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

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

関連記事

MarkDownDiagram

マークダウンで画面遷移図などのダイアグラムを作れるツールをブラウザベースで作ってくださった方がおられます。 大変重宝していて、業務で使いまくりです。 https://github.com/wakufa …

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

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

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

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

Google Apps Script でWebAPIを作ろう

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

Google Bookmarksを利用するChrome拡張機能

暇なときにGoogle Bookmarksを利用するプラグインを作ってみました。 最低限のことしか出来ないのですが、自分で使う分にはこれで必要十分です。 Gブックマーク もしよろしかったら使ってみてく …