以前に「WordPressのカテゴリやタグの条件分岐を組み合わせて特定のページだけコンテンツを表示したり非表示にする方法」という記事を書きました。
この方法はかなり便利で僕も多用してるんですが、改めて読み返してみると「いくつかのカテゴリにだけ表示させたい」というケースを紹介してなかったようです。
追記しようかなとも思ったんですが、結構よく使う方法だと思うので新たに記事を書いて紹介します。
「いくつかのカテゴリだけ表示させたい」というときの条件分岐
以前に下記の記事で紹介したのは「カテゴリがAのときはこれ、Bのときはこれ」というカテゴリが1つずつの場合は使える方法でした。
in_categoryという関数を使ってカテゴリを指定して条件分岐するというものですね。
で、今回紹介するのは「AカテゴリではXを表示し、BカテゴリとCカテゴリではYを表示し、それ以外ではZを表示」という複数のカテゴリをまとめて条件分岐させたい場合。このケースでは下記のように記述します。
<?php if ( in_category( 'WordPress' ) ): ?> WordPressカテゴリでは「X」を表示 <?php elseif ( in_category( array( 'iphone', 'ipad' ) ) ) : ?> iPhone・iPadカテゴリでは「Y」を表示 <?php else: ?> 上記すべてに当てはまらなければ「Z」を表示 <?php endif; ?>
三行目のin_category( array( 'html', 'php' ) )
というところがそれでして、「array」を書かないと複数のカテゴリを書いたところで反応してくれないんですね。
上記の例だと、「WordPressカテゴリではWordPress関連書籍のアフィリエイトリンクを、iPhone, iPadカテゴリではApple製品を購入できるようなアフィリエイトリンクを、それ以外ではGoogle AdSenseを表示させる」みたいなことができます。
single.phpで使用する場合に「in_category」を使うことが多いです。ループを使用した記事一覧ページなどでは「is_category」に置き換えて使ってください。
僕はPHPを深く理解せずにWordPressいじってるもので、こういうところで引っかかるんですよ…。
最後に
PHPが分かる方にとってはもしかしたら大した問題じゃないのかもしれませんが、WordPress触ってるけどPHPのことはさほど詳しくないという人が結構いると思ったので紹介しました。(僕自身つまずいたことがありましたしね。)
広告の出し分けなどで便利なのでぜひご活用ください。