基礎から徹底的に覚えよう!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ループを言い換えると、
『もし、次のポストがあるなら、次のポストがあるだけ繰り返しループします。ポストがないのであれば、内容がない場合に表示させたい内容を表示します。』ということになります。