WordPressループ have_posts編

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()は、『ポスト(記事)を読み込む』
一つのポストを呼びに行くので、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ループを言い換えると、

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