ワードプレスでのサイト構築はループに始まりループに終わると言っても過言ではありません。
というわけでループについて簡単にまとめておきます。
基本ループ
<?php if(have_posts()): while(have_posts()): the_post(); ?> //ほげほげ <?php endwhile; endif; ?>
普通のブログであれば、大抵はこれだけで済みます。
現在のページ(トップページ、カテゴリページなど)に適合した投稿内容を表示してくれます。
- have_posts()
- 表示すべき投稿記事があれば「true」を返し、なければ「false」を返します。表示対象となる投稿記事はページに依存します。
- the_post()
- 投稿情報を読み込み、その情報をカスタムタグ(the_contentなど)で使えるように準備します。
基本ループをカスタマイズ
基本ループで呼び出される投稿は、デフォルトではそのページ(トップページ、カテゴリページなど)に依存しますが、基本ループの直前にこのコードを記述すると投稿を呼び出す条件が変更されます。
<?php query_posts($query_string.'&posts_per_page=5&cat=1,3'); ?>
上記だと、カテゴリID1または3に属する投稿が5件毎に呼び出されます。
- query_posts()
- 基本ループで呼び出す投稿の条件(デフォルトはページに依存)を指定する。
- $query_string
- 主に現在の表示ページ数などを表わす文字列。ページナビゲーションを利用する場合などに必須なので、特に問題が無ければ最初から付けておくとよいです。
ただし、この方法は条件分岐タグ(is_home()、is_category()など)の動作に影響を与えるので注意が必要です。
マルチループ
自由に投稿一覧を表示させたい場合は以下のループを使用します。
<?php $myposts = get_posts('numberposts=5&category=1'); ?>
<?php foreach($myposts as $post): ?>
<?php setup_postdata($post); ?>
//ほげほげ
<?php endforeach; ?>
- get_posts()
- ページに関係なく任意の投稿記事を読み込み、その情報を使えるように準備する。対象となる投稿記事は引数で指定する。
- setup_postdata()
- 投稿データをカスタムタグ(the_contentなど)経由で呼び出せるように準備する。基本ループの「the_post()」に相当。あるいはこれは使用せず、「<?php echo $post->ID; ?>」という風に投稿データを直接呼び出してもよいです。
細かい挙動については、また個別にエントリを書こうと思います。