35歳で会社を辞めてサイト運営で生計を立てているフリーランスのブログ

現役Webデザイナーがお答えします

in_categoryで特定のカテゴリーに属する投稿に同じ内容を表示させる|WordPress

WordPressのin_categoryを使用すれば、

・「マラソン」カテゴリーに属する投稿(記事)すべてに、ランニングシューズの広告を表示させる
・「イベント」カテゴリーに属する投稿(記事)すべてに、共通の申し込みボタンを表示させる

といったことができます。

これなら、記事毎にコードを入れるより、効率的ですよね。

今回は、in_categoryの基本的な使い方、条件分岐で記述する方法を紹介します。

スポンサードリンク

最もお手軽な方法

single.phpなどの任意の場所に以下のコードを記述します。

<?php if (in_category('event')) { ?>
ここを表示
<?php } ?>

eventのところに、表示させたいカテゴリーのスラッグ名が入ります。上記は、イベントカテゴリー(スラッグ名がevent)に属する投稿の場合「ここを表示」のところに記述した内容を表示できます。

<?php if (in_category('1')) { ?>
ここを表示
<?php } ?>

スラッグ名ではなく、カテゴリー番号での指定も可能です。カテゴリー番号を調べる方法は「WordPressで番号(ID)を調べる(投稿・固定ページ・カテゴリー・タグ・カスタム投稿タイプ)」を参考にしてください。

複数のカテゴリーで表示させたい

複数のカテゴリーを指定することもできます。

<?php if (in_category(array('event','news'))) { ?>
ここを表示
<?php } ?>

上記はカテゴリーのスラッグ名が、eventとnewsに属する投稿の場合「ここを表示」のところに記述した内容を表示できます。

スポンサードリンク

条件分岐

カテゴリーがAの場合はAの内容を、Bの場合はBの内容を、それ以外はCの内容を、といった具合に条件分岐をさせることができます。

<?php if(in_category('event')): ?>
ここを表示(イベント)
<?php elseif(in_category('news')): ?>
ここを表示(ニュース)
<?php else: ?>
ここを表示(その他)
<?php endif; ?>

カテゴリースラッグが、eventにもnewsにも該当しない場合は「ここを表示(その他)」が表示されます。

<?php if(in_category('event')): ?>
ここを表示(イベント)
<?php elseif(in_category('news')): ?>
ここを表示(ニュース)
<?php endif; ?>

カテゴリースラッグが、eventにもnewsにも該当しない場合は、何も表示されません。