記事一覧リストに特定のカテゴリーを表示させる 又は 表示させない方法【WordPress】

WordPressのトップページや固定ページでは、これまでに投稿した記事一覧を表示させるループさせる処理が施されています。

この処理において
「特定のカテゴリー(複数もOK)の記事のみ表示させ
もしくは
「特定のカテゴリー(複数もOK)の記事のみ表示させない
という条件処理が可能ですので、紹介致します。

記事一覧表示処理でカテゴリーを指定する部分

WordPressサイトのトップページの表示を担うテンプレート"index.php" や、固定ページの表示を担う"page.php" を見ると、下記のようなコードが確認できると思います。

<?php while(have_posts()) : the_post(); ?>

<?php endwhile; ?>

場合によっては

<?php if(have_posts()) : ?>
<?php while(have_posts()) : the_post(); ?>

<?php endwhile; ?>
<?php endif; ?>

と、やや冗長やコーディングがされている場合もあります。

いずれにせよ、この部分で過去に投稿した記事一覧が表示されます。

この直前に、以下に説明するquery_posts()処理入れる事で、任意のカテゴリーのみを表示させたり、任意のカテゴリー以外を表示させたりする事が可能となります。

query_posts() でカテゴリーを指定

特定のカテゴリー記事のみを表示させる場合

例えばカテゴリーIDが3の記事のみを表示させる場合は、下記のように追記すればOKです。

<?php $paged = get_query_var('paged'); ?>
<?php query_posts('cat=3&paged=$paged'); ?>

<?php if(have_posts()) : ?>
<?php while(have_posts()) : the_post(); ?>

<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_query(); ?>

query_posts() を使用して、カテゴリーID「3」の記事のみにループ条件を変更しているのです。
処理が完了後はループ条件を初期設定に戻すために、必ずwp_reset_query()を記述します。

複数のカテゴリー記事を表示させる場合

カテゴリーIDが、「3」「5」「7」の記事を表示させる場合は、下記のようにカンマで区切ってコーディングします。

<?php query_posts('cat=3,5,7&paged=$paged'); ?>

カンマの後に半角スペースを入れても大丈夫です。
そちらの方が見やすいかもしれません。

特定のカテゴリー記事を表示させない場合

逆に特定のカテゴリーの記事を表示させない場合は、マイナスを付与すればOKです。
カテゴリーIDが3の記事を除外する場合は

<?php query_posts('cat=-3&paged=$paged'); ?>

この場合も、次のように複数指定する事ができます。

<?php query_posts('cat=-3, -5, -7&paged=$paged'); ?>

1ページ当たりの表示記事数を指定

posts_per_page=~
をquery_posts()の引数文字列に加える事によって、1ページ当たりの表示記事数を指定する事ができます。

<?php query_posts('cat=3&posts_per_page=10&paged=$paged'); ?>

とした場合は、1ページ当たり10記事分が表示される事になり、それ以降はページ送り処理が施されるのです。

サブコンテンツ

このページの先頭へ