WordPressで特定のカテゴリのページだけに表示させる条件分岐「in_category」

WordPressで特定のカテゴリのページだけに表示させる条件分岐「in_category」
関連キーワード
WordPress

WordPressには条件に応じて表示を振り分けることができる便利な機能がありまして、今回紹介するのは「in_category」という関数を使った「特定のカテゴリのページだけに表示させる」条件分岐です。

この方法を使うと「AカテゴリのページだけにBを表示させる」ということが簡単に実現できます。

カテゴリに応じて表示するかどうかを切り分ける

「in_category」と似ている「is_category」という関数がありまして、今回紹介するのはこちらではありません。

is_categoryは「そのカテゴリのアーカイブページかどうか」を判定しますので、例えば記事ページ内(single.php)で使いたい場合にはin_categoryを使う必要があります。

ではいくつか記述例をご紹介していきます。

カテゴリIDが○○のときに表示

こちらが基本形で、あるカテゴリIDのページにのみ表示させるときの記述方法です。

<?php if ( in_category( 1 ) ): ?>
カテゴリIDが「1」のページにのみ表示
<?php endif; ?>

カテゴリのスラッグが○○のときに表示

カテゴリIDは「スラッグ」に置き換え可能です。その場合は「’ (シングルクォーテーション)」でスラッグを囲います。

<?php if ( in_category( 'css' ) ): ?>
「css」というカテゴリのページにのみ表示
<?php endif; ?>

カテゴリが複数ある場合

複数のカテゴリを選びたい場合は「array()」の記述を追記して、カッコの中に「, (カンマ)」区切りで表示させます。

<?php if ( in_category( array( 'css', 'column' ) ) ): ?>
「css」と「column」というカテゴリのページにのみ表示
<?php endif; ?>

特定のカテゴリとそれ以外という2択

あるページにだけ表示させたいというケース以外に「あるページにはアレ、それ以外にはソレを表示させたい」という場合もあると思います。そんなときは下記のように記述します。

<?php if ( in_category( 'css' ) ): ?>
cssというカテゴリのページにのみ表示
<?php else: ?>
それ以外のページに表示
<?php endif; ?>

3択以上の分岐をしたい場合

「Aというカテゴリではアレ、Bというカテゴリではコレ、それ以外ではソレ」という具合に3択以上の場合は一行目をコピペして「if」を「elseif」に置き換えるだけ。(4択以上ならその記述を増やすだけです。)

<?php if ( in_category( 'css' ) ): ?>
cssというカテゴリのページにのみ表示
<?php elseif ( in_category( array( 'apple', 'column' ) ) ): ?>
appleとcolumnというカテゴリのページにのみ表示
<?php endif; ?>

最後に

今回はカテゴリに応じて振り分けましたが、他にもいろんな条件分岐のやり方がありますので、過去記事を貼っておきます。特に「スマホかそれ以外か」という分岐はよく使ってます。

タグの場合は「has_tag」という関数を使うのですが、それはまた明日の記事でご紹介します。