処理対象の記事をセットします。セットされた記事は、記事を処理するテンプレートタグ(例:the_title()など)を実行したときの処理対象となります。
the_post();なし。
処理対象の記事をセットします。その後、内部的にループのポインタを次の投稿へ進めます。(詳しくは下記例を参照ください。)
下記の例では、メインクエリで取得した記事一覧データを、while 文で1件ずつループして処理しています。ループ内で the_post() が実行されると、現在の記事データがグローバル変数 $post にセットされ、テンプレートタグが参照できる状態になります。それにより、the_title() などのテンプレートタグを使って、現在の記事のタイトルや本文を出力することができます。
また、the_post() は処理対象の記事をセットした後、内部的にループのポインタを次の投稿へ進めます。そのため、コード例の2行目のhave_posts()は、2回目以降のループにおいても常に次の投稿が存在するかどうかを正しく判定することができます。(the_post()がポインタを次に進めなければ永遠と同じ記事を処理してしまいます。)
<?php if (have_posts()) : ?>
<?php while (have_posts()) : ?>
<?php the_post(); ?>
<?php the_title(); ?>
<?php endwhile; ?>
<?php endif; ?>【引数とは】
テンプレートタグ(=関数)を実行する際に、引数を渡すことができるテンプレートタグがあります。引数は、関数の中で使われるので、渡す引数の値によって実行結果が変わってきます。何を処理したいのか、どのようなデータを取得したいのかによって渡す引数が変わります。
【引数について】
例えばarchive.phpで記事一覧ページを作成する場合に、下記のようなコードで記事一覧を表示します。
<?php if (have_posts()): ?>
<ul class="cards">
<?php while (have_posts()): ?>
<?php the_post(); ?>
<li class="cards__item card">
<a class="card__link" href="<?php the_permalink(); ?>">
<div class="card__data">
<div class="card__img">
<?php if (has_post_thumbnail()) : ?>
<?php the_post_thumbnail(); ?>
<?php endif; ?>
</div>
<div class="card__date"><?php echo get_the_date('') ?></div>
<div class="card__title"><?php the_title(); ?></div>
</div>
</a>
</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>※当サイトでは初期値とデフォルト値の言葉の定義を区別せず、原則統一して初期値を採用しています。