WordPressのループ処理で記事の表示件数や特定カテゴリーを制御するquery_postsの使い方

記事の表示件数や特定カテゴリーを制御する

表示させる記事の件数をそれぞれの記事一覧ページで異なる設定をしたい場合や、特定のカテゴリーの記事のみを表示させたい場合があると思います。

ビジネスサイトなどではページ内容によって特定のカテゴリーの記事として、おすすめのカテゴリー記事や今の時期だけプッシュしていきたいカテゴリーの記事があったりします。

そのような場合のために、WordPressのループ処理の中で、表示を制御することのできる「query_posts」の使い方について説明させていただきたいと思います。

投稿した記事の表示件数の設定方法

まず、WordPressの管理画面では個別の設定はできませんが、ブログの一覧ページの全体的な表示件数を設定することができます。

1ページに表示する最大投稿数

初期設定では10件になっていますが、メニューの「設定」→「表示設定」の中にある「1ページに表示する最大投稿数」が記事をループ処理で呼び出す回数になります。

一般的にこちらでトップページやカテゴリーページ、アーカイブページなどすべての一覧ページが同じ件数表示されます。

ここからが個別に表示を変更していくのですが、デザイン的に一覧を長くしたい、短くしたいなどもあると思いますが、SEO的な意味でも細かく調整したい場合があると思います。

query_postsの使い方について

「query_posts」はループ処理によって表示される投稿記事の条件を指定することができます。

表示する件数を制御したり、カテゴリーを限定させたり、表示順なども変更できます。

ループ処理の基本

まず、ループ処理の基本として。

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
//ループさせたい投稿内容
<?php endwhile; endif; ?>

こちらを使用した例として。

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h1><?php the_title(); ?></h1>
<div><?php the_content(); ?></div>
<?php endwhile; endif; ?>

こちらのループ処理は、「記事があればタイトルを、h1タグで囲み、次に本文をdivタグで囲んで表示させるという処理を、ある記事の数だけ繰り返して行ってください」という意味になります。

表示するカテゴリーを制御する方法

特定のカテゴリーを制御して表示させるために、先ほど説明しましたループ処理の前に下記を記述します。

//カテゴリースラッグの場合
<?php query_posts('category_name=カテゴリースラッグ'); ?>
//カテゴリーIDの場合
<?php query_posts('cat=カテゴリーID'); ?>

こちらを使用した例として。

//カテゴリースラッグが「product」の場合
<?php query_posts('category_name=product');?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
//カテゴリーIDが「3」の場合
<?php query_posts('cat=3'); ?>
<?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(); ?>

表示する記事の件数を制御する方法

表示させる記事の件数を指定するために、こちらもループ処理の前に下記を記述します。

  //表示件数を指定する場合
<?php query_posts('posts_per_page=出力する記事数'); ?>

こちらを使用した例として。

 //表示件数が「20記事」の場合
<?php query_posts('posts_per_page=20'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

表示する記事件数とカテゴリーなど複数制御する方法

「query_posts」のパラメーターを複数指定する場合は「&」で繋げることができます。

//カテゴリースラッグが「product」で表示件数が「20記事」の場合
<?php query_posts('category_name=product&posts_per_page=20'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
//カテゴリーIDが「1,3,5」で表示件数が「15記事」の場合
<?php query_posts('cat=1,3,5&posts_per_page=15'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

まとめ query_postsの使い方

このように「query_posts」はループ処理の前に、表示させたい記事の条件を一行追加するだけで、記事件数や特定カテゴリーなどを抽出して一覧表示してくれます。

管理画面で設定した投稿数だけではなく、サイトユーザーの求めている情報や動線を考慮して、サイト内情報全体を組み立ててみてはいかがでしょうか?

ビジネスサイトであれば細かい設定で、コンバージョンが上がったり、目的達成に近づけたりしますので、こちらを参考にカスタマイズしていただければと思います。