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からsyslogを書く

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

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

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

PHP Toolkit のSoapClientが接続できない

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

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

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

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

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