【WordPress】特定のカテゴリーを除外して投稿を表示させる

【WordPress】特定のカテゴリーを除外して投稿を表示させる

こんにちは、nishi_talk(@nishi_talk)です。
今回はWordPressで特定のカテゴリーを除外して投稿を表示させる方法をご紹介します。

カスタム投稿タイプを使ってないサイトで特定のカテゴリーの投稿を取得する機会がありました。
既存サイトでカテゴリーはこんな感じです。

├ コラム
│ ├ コラムカテゴリー1
│ ├ コラムカテゴリー2
│ ├ コラムカテゴリー3
│ ・
│ ・
│ ・
│
├ ニュース
├ インフォメーション
・
・
・

コラムカテゴリーは常に増えていく設計になっていたので今回はコラムコラムカテゴリー以外のカテゴリーを除外して、コラムの投稿だけを取得します。



各カテゴリーのIDを調べる

まずはコラムコラムカテゴリー以外のカテゴリーIDを調べます。
カテゴリーIDを調べるのはこちらの記事が参考になります。

投稿IDとカテゴリーIDの確認 – WordPressの使い方と設定 – Webkaru
WordPressでカテゴリIDを取得する方法!カテゴリごとに背景色変えたいときなどに便利! | delaymania

特定のカテゴリーを除外して表示

除外するカテゴリーを指定して投稿を表示させます。

<?php
// post_type= 投稿タイプ
// posts_per_page= 表示件数
// cat=除外するカテゴリーを指定
$column_posts = get_posts('post_type=post&posts_per_page=6&cat=-1,-2,-3');
?>
<?php
foreach ( $column_posts as $post ):
    setup_postdata($post); ?>
    <article>
        <h1><?php the_title(); ?></h1>
        <p><?php the_content(); ?></p>
    </article>
<?php endforeach;
wp_reset_postdata(); ?>

投稿を取得する記述、cat=-(マイナス)を追加してカテゴリーIDを記述します。

cat=-カテゴリーID
cat=-1

特定のカテゴリーをだけを表示

逆に特定のカテゴリーだけの投稿を表示させます。

<?php
// post_type= 投稿タイプ
// posts_per_page= 表示件数
// cat=表示するカテゴリーを指定
$column_posts = get_posts('post_type=post&posts_per_page=6&cat=1,2,3');
?>
<?php
foreach ( $column_posts as $post ):
    setup_postdata($post); ?>
    <article>
        <h1><?php the_title(); ?></h1>
        <p><?php the_content(); ?></p>
    </article>
<?php endforeach;
wp_reset_postdata(); ?>