Blog

【WordPress】ループ処理で記事の表示件数やカテゴリーを指定する方法

2013.10.15 2020.10.25 WordPress

1つのページの中でカテゴリーごとに記事を一覧表示したり、そのそれぞれで表示件数を個別に指定したいときに使える方法。ブログのトップページなどで使うケースが多いのではないでしょうか。ループ処理にて条件を指定します。

ループ処理の基本形

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
	<h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
	<div class="post"><?php the_content(); ?></div>
<?php endwhile; ?>
<?php else: ?>
	<h2>記事がありません</h2>
<?php endif; ?>

上のループ処理は、

記事があれば…
  1. タイトルを<h2>タグで囲んで表示
  2. 本文を「post」というクラス名の付いた<div>タグで囲んで表示
  3. この処理を記事がある分だけ繰り返す
  4. ループ終わり
記事がなければ…
  1. 「記事がありません」という文字列を<h2>タグで囲んで表示
  2. ループ終わり

という意味です。

このループ処理の開始タグの前に1行追加し「どんな記事を探してくるか?」などの条件を付加してやることで、表示件数を指定したり、特定のカテゴリーのみを抽出して一覧表示できるようになります。

以下にいくつかサンプル的なものを挙げておきますので、あなたの場合に当てはめて書き換えてみてください。

ループ処理でいろいろな指定をしてみる

カテゴリーIDが1の記事を表示する

<?php query_posts('cat=1'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

記事を10個表示する

<?php query_posts('posts_per_page=10'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

カテゴリーIDが1,3,5の記事を表示する

<?php query_posts('cat=1,3,5'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

カテゴリーIDが1の記事を10個表示する

<?php query_posts('cat=1&posts_per_page=10'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

カテゴリーIDが1,3,5の記事を10個表示する

<?php query_posts('cat=1,3,5&posts_per_page=10'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

カテゴリーIDが1,3,5以外の記事を表示する

<?php query_posts('cat=-1,-3,-5'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

カテゴリーIDが1,3,5以外の記事を10個表示する

<?php query_posts('cat=-1,-3,-5&posts_per_page=10'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

まとめ

以上、ループ処理で記事の表示件数やカテゴリーを指定する方法でした。

この辺を押さえておけばいろんな記事一覧ページを作れるようになるかと思います。

それでは!