WordPressのカテゴリやタグの条件分岐を組み合わせて特定のページだけコンテンツを表示したり非表示にする方法

WordPressのカテゴリやタグの条件分岐を組み合わせて特定のページだけコンテンツを表示したり非表示にする方法
関連キーワード
WordPress

2日連続でWordPressの「カテゴリでの条件分岐」「タグでの条件分岐」について書きました。

この2つは組み合わせることでより細かい条件で分岐していけるので便利なんですよ。

というわけで、カテゴリとタグを組み合わせた条件分岐の実例を紹介します。

カテゴリとタグの条件分岐のやり方を復習

使う関数は「in_category」と「has_tag」です。ひとまずそれぞれの基本的な書き方を復習しておきましょう。

カテゴリごとにコンテンツを出しわける

<?php if ( in_category( 'css' ) ): ?>
CSSカテゴリで「A」を表示
<?php elseif ( in_category( 'iphone' ) ): ?>
iPhoneカテゴリで「B」を表示
<?php else: ?>
それ以外のすべてのカテゴリで「C」を表示
<?php endif; ?>

タグに応じてコンテンツを出しわける

<?php if ( has_tag( 'css' ) ): ?>
CSSタグが付いていたら「A」を表示
<?php elseif ( has_tag( 'iphone' ) ): ?>
iPhoneタグが付いていたら「B」を表示
<?php else: ?>
それ以外のすべてのタグが付いているかタグが付いていない場合は「C」を表示
<?php endif; ?>

カテゴリとタグを組み合わせた条件分岐

上記のやり方を踏まえて、カテゴリとタグを組み合わせてみます。

<?php if ( in_category( 'wordpress' ) ): ?>
Wordpressカテゴリで「A」を表示
<?php elseif ( in_category( 'webservice' ) ): ?>
  <?php if ( has_tag( 'Facebook' ) ): ?>
  WEBサービスカテゴリで「Facebook」タグが付いていたら「B」を表示
  <?php elseif ( has_tag( 'YouTube' ) ): ?>
  WEBサービスカテゴリで「YouTube」タグが付いていたら「C」を表示
  <?php else: ?>
  WEBサービスカテゴリでそれ以外のタグが付いているかタグが付いていない場合は「D」を表示
  <?php endif; ?>
<?php else: ?>
上記すべてに当てはまらなければ「E」を表示
<?php endif; ?>

カテゴリについて振り分けていき、その中でタグが付いてるか付いてないかで再度振り分けるというだけのことです。これまでのことが理解できていれば簡単ですね。

ちなみに上記の例はdelaymaniaで実際に使ってるものです。WordPressカテゴリとFacebookタグ, YouTubeタグが付いてるWEBサービスカテゴリの記事ページにだけ文末に特定のものを表示させるようにしました。

効果はまだよく分かりませんけども、個人的には実装時点で満足してます。(あまりに効果が無ければ外しちゃうかもしれません…。)

最後に

使い方によっては強力な武器になると思いますので、興味ある方はぜひお使いください。

他にもこれまでにいくつか条件分岐について記事を書いてますのでよろしければあわせてご覧ください。