WordPressループの基本構造と書き方

WordPressのループ(The Loop)の基本的な仕組みを示したテーマ開発向けのイメージ
WordPressで投稿を表示するための「ループ(The Loop)」の基本構造を解説。

WordPressで投稿や固定ページを表示する際、中心的な役割を担うのが「ループ(The Loop)」です。
ループは、データベースから投稿を取得し、順番に出力するための仕組みであり、テーマ開発やカスタマイズを行う上で欠かせない基礎知識です。

この記事では、WordPressループの基本構造から書き方、よく使われる条件分岐までを、初心者でも理解できるよう丁寧に解説します。

WordPressループとは何か

WordPressループとは、投稿データを1件ずつ取得し、表示処理を繰り返す仕組みです。
トップページ、カテゴリー一覧、検索結果、個別投稿ページなど、ほぼすべての投稿表示にこの仕組みが使われています。

ループは次のような流れで動作します。

  1. 投稿が存在するかを確認
  2. 投稿があれば1件取得
  3. 取得した投稿データを表示
  4. 次の投稿があれば同じ処理を繰り返す

この一連の処理をPHPコードとして書いたものが「WordPressループ」です。

WordPressループの基本構造

最も基本的なループの書き方

まずは、WordPressで最も基本となるループ構造を確認します。

<?php if ( have_posts() ) : ?>
  <?php while ( have_posts() ) : the_post(); ?>

    <!-- 投稿の表示内容 -->

  <?php endwhile; ?>
<?php endif; ?>

このコードは、WordPress公式テーマでも使われている標準的な形です。

ループを構成する主要な関数

have_posts() の役割

have_posts() は、表示すべき投稿が存在するかどうかを判定する関数です。
投稿が1件以上あれば true を返し、すべて表示し終えると false になります。

そのため、ifwhile の両方で使われています。

the_post() の役割

the_post() は、現在の投稿を1件分セットする関数です。
この関数を実行すると、以下のようなテンプレートタグが使用可能になります。

  • the_title()
  • the_content()
  • the_permalink()
  • the_time()

つまり、the_post() を実行しないと、投稿タイトルや本文を正しく取得できません。

投稿内容を表示する基本的な書き方

タイトルと本文を表示する例

<?php if ( have_posts() ) : ?>
  <?php while ( have_posts() ) : the_post(); ?>

    <article>
      <h2><?php the_title(); ?></h2>
      <div class="entry-content">
        <?php the_content(); ?>
      </div>
    </article>

  <?php endwhile; ?>
<?php endif; ?>

このように、HTML構造の中にテンプレートタグを配置することで、投稿データを表示できます。

投稿が存在しない場合の処理

no posts found の書き方

投稿が存在しない場合に備えて、else を使った分岐を書くのが一般的です。

<?php if ( have_posts() ) : ?>
  <?php while ( have_posts() ) : the_post(); ?>

    <p><?php the_title(); ?></p>

  <?php endwhile; ?>
<?php else : ?>

  <p>表示する投稿がありません。</p>

<?php endif; ?>

この処理を入れておくことで、検索結果が0件だった場合などにも適切な表示が行えます。

ループが使われる代表的なテンプレートファイル

WordPressテーマでは、以下のテンプレートファイル内でループが使われます。

  • index.php
  • archive.php
  • category.php
  • search.php
  • single.php

テンプレート階層の理解については、
WordPressテーマの基本構造とテンプレート階層
の記事もあわせて確認すると理解が深まります。

よくある注意点

ループの外でテンプレートタグを使わない

the_title()the_content() は、ループの中でのみ正しく動作します。
ループ外で使用すると、意図しない投稿が表示されたり、何も出力されない場合があります。

HTML構造と見出し階層を意識する

ループ内で見出しタグを使う場合は、ページ全体の構造を考慮することが重要です。
見出しの使い分けについては、
HTMLの見出しタグ(h1〜h6)の正しい使い方
の記事が参考になります。

WordPressループを理解するメリット

WordPressループの仕組みを理解すると、以下のような応用が可能になります。

  • 投稿一覧の自由なレイアウト調整
  • カスタム投稿タイプの表示制御
  • 条件に応じた表示切り替え
  • 独自クエリの作成

テーマ開発や本格的なカスタマイズを行う上で、ループの理解は必須と言えます。

まとめ

WordPressループは、投稿を表示するための中核となる仕組みです。
基本構造はシンプルですが、正しく理解しておくことで、テーマ開発の幅が大きく広がります。

まずは、

  • have_posts()
  • the_post()
  • テンプレートタグ

この3点を確実に押さえることが重要です。

関連記事