WordPressの条件分岐”in_category”で特定のカテゴリーページにのみ表示させる方法

どうも、ホワイトです。

WordPressを使っていれば条件よって分岐する記述を行わざるを得ないことが幾度となくあります。

「特定の〇〇にだけ〇〇を表示させたい」なんてことは日常茶飯事のように起きてきます。

今回は特定のカテゴリーに属するページだけに表示させる条件分岐の方法です。

特定カテゴリーの表示を切り替える

今回使う条件分岐のタグは”in_category”です。

“is_category”もありますが、間違えないように注意してください。

“is_category”はアーカイブページの条件分岐に使用するので、そちらはまた別にまとめたいと思います。

例1)newsというカテゴリーだけに表示させる方法

スラッグを使う場合。

<?php if ( in_category( 'news' ) ): ?>
newsカテゴリーに属したページだけに表示
<?php endif; ?>

スラッグだけでなくIDを使うことも可能です。

その場合はシングルクオーテーションを外します。
※例として10と入れていますが、実際に該当するIDを入れてください。

<?php if ( in_category( '10' ) ): ?>
newsカテゴリーに属したページだけに表示
<?php endif; ?>

例2)newsというカテゴリーと、それ以外に表示させる方法

上記の二例はnewのときだけに表示する方法ですが、newカテゴリーのページとそれ以外のページに表示したいという場合は以下のようになります。

<?php if ( in_category( 'news' ) ): ?>
newsカテゴリーに属したページにはこちらを表示
<?php else: ?>
newsカテゴリー以外のページにはこちらを表示
<?php endif; ?>

例3)三つ以上の選択肢が必要な場合に表示させる方法

もちろん二つより多い選択肢で表示を出し分けることもあります。

むしろそんなケースも多くあるのではないかと思います。

そういったときは以下のような記述となります。

<?php if ( in_category( 'news' ) ): ?>
newsカテゴリーに属したページにはこちらを表示
<?php elseif ( in_category( 'schedule' ) ): ?>
scheduleカテゴリーに属したページにはこちらを表示
<?php elseif ( in_category( 'gallery' ) ): ?>
galleryカテゴリーに属したページにはこちらを表示
<?php else: ?>
上記三つ以外のカテゴリーのページにはこちらを表示
<?php endif; ?>

カテゴリーを複数指定する場合

特定のカテゴリーを一つだけでなく複数指定したい場合も当然出てくると思います。

そういうときは以下のコードを使います。

<?php if ( in_category( array( 'schedule', 'gallery' ) ) ): ?>
scheduleとgalleryのカテゴリーに属したページだけに表示
<?php endif; ?>

カンマで区切ってカテゴリーを複数記述していけば大丈夫です。

逆に特定のカテゴリーにのみ表示させない

これまでとは逆に特定のカテゴリーだけに表示させたくないという場合も当然出てくるでしょう。

そういった場合は以下の記述をします。

<?php if (!in_category( 'schedule' ) ): ?>
scheduleカテゴリーに属したページだけに表示しない
<?php endif; ?>

色々な場面で使うケースがあると思いますが、個人的にも使用頻度は高く、WordPressを使う上で必須となる条件分岐のタグでしょう。