基礎から徹底的に覚えよう!WordPressループ メインループ編

WordPress

WordPressで欠かせないのが、今回の話の主題になるWordPressループです。
このWordPressループは、WordPressを使っていく上で様々な箇所で必要になるのに、WordPressに触れたばかりの人にとってはテンプレートタグなんかより複雑で、覚えるのがやっかいです。

慣れている人にとっては当たり前のものが、初心者にとってはハードルが高く、PHPの知識も必要でWordPressの最初の関門と言ってもいいかもしれません。

WordPressループって

当たり前にWordPressループって使っているけど、WordPressループってなんなの?と疑問に思う方が多いと思います。

簡単にいうと、
『投稿している記事を読み出して、表示させる仕組み』です。

今回はその代表であるメインループの説明をします。

メインループ have_posts()

<?php if ( have_posts() ) : ?>
  <?php while ( have_posts() ) : ?>
    <?php the_post(); ?>
    ここに繰り返し表示させたい内容を記述
  <?php endwhile; ?>
<?php else: ?>
繰り返し表示したい内容がない場合に表示させたい内容を記述
<?php endif; ?>

上記がメインループのベースです。
基本のこの形を覚えてしまうにも、WordPressのテンプレートタグを覚えるよりハードルがあります。

なので、ひとつずつ解説していきます。

have_posts()

have_posts()は、ざっくりいうと『次のポスト(記事)を持っている』という意味です。
複数のポストがある可能性があるので、postに複数形のsが付きます。
覚えておいて損はないので、覚えておきましょう。

the_post()

the_post()は、『ポスト(記事)を読み込む』
ポスト(記事)にあるタイトルや本文、日付などの情報を読み込みます。
ここでは出力ではなく、読み込むというのがポイントです。
the_post()のみでは何も表示しません。

一つのポストを呼びに行くので、postは単数形になります。
こちらもhave_posts()とセットに覚えてしまいましょう。

if文を使った条件分岐

PHPの制御文であるif文。「もし〜だったら、〇〇、そうでなければ××」。
ifが「もし〜だったら」
elseが「そうでなければ」
endifがif文を終わらせる役割になります。

今回の説明では登場しませんが、ifとelseの間に挟むelseif「そうではないが、もし〜だったら」などもございます。

<?php if (条件1) :?>
内容A
<?php else: ?>
内容B
<?php endif; ?>

もし条件1なら、内容Aを表示、そうでなければ、内容Bを表示します。

while文を使った繰り返し

PHPの制御文のwhile文。ある条件の成り立っている間だけ、繰り返します。
endwhileで終了します。

<?php while(): ?>
<?php endwhile; ?>

まとめ

つまり、上記の基本さえ覚えていれば、WordPressのメインループは自分で作ることができます。このループも毎度同じ形になるわけではないので、一塊りで覚えるより、内容を理解して覚えたほうが、応用に対応できる力がつきます。

おさらい

<?php if ( have_posts() ) : ?>
  <?php while ( have_posts() ) : ?>
  <?php the_post(); ?>
  ここに繰り返し表示させたい内容を記述
  <?php endwhile; ?>
<?php else: ?>
繰り返し表示したい内容がない場合に表示させたい内容を記述
<?php endif; ?>

WordPressループを言い換えると、

『もし、次のポストがあるなら、次のポストがあるだけ繰り返しループします。ポストがないのであれば、内容がない場合に表示させたい内容を表示します。』ということになります。