WordPressで特定のカテゴリーのみを処理対象にする

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 ?>
ifの仕組みを知りたい場合は90分で読める!WordPressテンプレートのifとwhileを読んでみてください。

また、テンプレートのカスタマイズでは徐々に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 ?>

あとは試行錯誤してみてください。

WordPressのPHP