WordPressで特定のカテゴリーのみを処理対象にする
WordPressで条件分岐を使って特定のカテゴリーのみを処理対象にしたいこともあります。たとえば、広告表示です。single.phpを開いて記事本文(the_content)の下に広告タグを入力することがあります。
<?php the_content(); ?> <!-- 広告 --> <img src="http://…略….png">
この場合、すべての記事の本文下に広告が表示されます。
それでも問題ありませんが、特定のカテゴリーに属する記事のみに広告を表示したい場合もあります。ここではPHPの条件分岐の構文「if」とWordPress関数を使って対象カテゴリーを限定する方法を紹介します。
「特定のカテゴリーのみ」の条件分岐
特定のカテゴリーに属する記事のみに広告を表示したい場合は、ifとin_categoryを使って条件分岐を組み立てます。たとえば、スラッグが「event」のイベント情報カテゴリーの記事のみに広告を表示する場合は次のようになります。
<?php if(in_category('event')) : ?> <!-- 広告 --> <img src="http://…略….png"> <?php endif ?>
「イベント情報」カテゴリーのみに広告が表示されます。その他のカテゴリーに属する記事には広告は表示されません。
「if」は「~の場合は」を組み立てるPHPの構文です。書式の例は次のようになります。
<?php if(条件を記述) : ?> <?php endif ?>
また、テンプレートのカスタマイズでは徐々にPHPの構文が登場して難しくなってきます。PHPの基本構文を簡単に理解したい場合は、PHPプログラミングの教科書なども参考にしてください。私が書いた本です。古い本なので宣伝するほどではありませんが。
複数カテゴリーを対象にする
in_categoryで複数カテゴリーを指定する場合は次のように記述します。この例ではevent、news、campaignの3つのカテゴリーを対象にしています。
<?php if(in_category(array('event', 'news', 'campaign'))) : ?> <!-- 広告 --> <img src="http://…略….png"> <?php endif ?>
「キャンペーン情報」カテゴリーの記事にも広告が表示されるようになります。
カテゴリーアーカイブの条件分岐
まぎらわしい話をします。ここまでに紹介したin_categoryは、その記事が特定のカテゴリーに属するか判断する命令です。そのページが「特定のカテゴリーアーカイブか」の判断ではありません。
表示中のページが特定のカテゴリーアーカイブかどうか判別するにはis_categoryを使います。たとえば、スラッグが「campaign」のキャンペーン情報カテゴリーのアーカイブのみを対象にする場合は、次のようになります。
<?php if(is_category('campaign')) : ?> <!-- 広告 --> <img src="http://…略….png"> <?php endif ?>
キャンペーン情報のアーカイブのみに広告が表示されます。
複数カテゴリーを対象にする場合は次のように記述します。
<?php if(is_category(array('event', 'news', 'campaign'))) : ?> <!-- 広告 --> <img src="http://…略….png"> <?php endif ?>
あとは試行錯誤してみてください。