ワードプレスの個別投稿ページをカテゴリーやタグで条件分岐するカスタマイズ方法

ワードプレスの個別投稿ページをカテゴリーやタグによる条件分岐でカスタマイズする方法について解説します。

今回やりたいこと

今回やりたいことは、ワードプレスのsingle.phpなど(各ワードプレステーマによる)で表示させる個別投稿ページをカテゴリーやタグによる条件分岐でカスタマイズすることです。

条件分岐させてどういう処理を行うかは自由ですが、私の場合は、各個別投稿ページの記事下に特定のカテゴリーやタグの時だけ特定の広告を表示させたり特定の記事へのリンクを表示させたりしています。

例えば、下の図のようにカテゴリーAの記事のときは記事下にカテゴリーAに関連した広告を表示させ、カテゴリーBの記事のときはカテゴリーBに関連した広告を表示させ、カテゴリーA、B以外のときは何も広告を表示させないといったことが出来るようになります。

ワードプレス 条件分岐 カテゴリー

記事数が少なければ直接記事を編集すればいいですが、毎回手動で行うのが面倒な場合や記事数が多い場合などは、カスタマイズで一括で行えるようにしておくのが便利です。

事前準備

編集するファイルや編集箇所などは各ワードプレステーマによって異なるため個別に細かく触れることはしませんが、カスタマイズするにあたって事前にやっておくことを簡単に説明します。

カスタマイズするファイルの確認

まずは、現在使用中のワードプレステーマで編集を行う個別投稿ページを表示させるファイルを確認しましょう。

参考までに、賢威8の場合はtemplate-parts/content-post.phpになります。

アフィンガーの場合は、single.php、single-type1.php、single-type2.phpになります。

カスタマイズするファイルを特定出来たら編集を行う箇所についても合わせて確認しておきましょう。

子テーマにコピー

カスタマイズを行うファイルの確認が済んだら、FTPソフトなどを用いて該当のファイルを子テーマにコピーします。

親テーマを直接カスタマイズしてしまうと表示がおかしくなったとき最悪もとに戻せなくなるだけでなく、テーマをアップデートしたときにカスタマイズした内容が消えてしまいます。

条件分岐の書き方

それでは、条件分岐の書き方について解説していきます。

カテゴリーによる条件分岐

以下、カテゴリーによる条件分岐の書き方になります。

<?php if ( in_category ('x') ) : ?>
//カテゴリーIDがxの処理を記述
<?php endif; ?>

条件が複数のときは以下のように記述することも可能です。

<?php if ( in_category( array('x', 'xx') ) ) : ?>
//カテゴリーIDがx、xxの処理を記述
<?php endif; ?>
<?php if ( in_category ('xx') ) : ?>
//カテゴリーIDがxxの処理を記述
<?php elseif ( in_category ('xxx') ) : ?>
//カテゴリーIDがxxxの処理を記述
<?php else: ?>
//カテゴリーIDがxx、xxx以外の処理を記述
<?php endif; ?>

x、xx、xxxはカテゴリーID。カテゴリーIDの調べ方はワードプレス管理画面の「投稿」→「カテゴリー」から各カテゴリーの詳細ページを開きます。ブラウザのURLの”category&tag_ID=”に続く数字がカテゴリーIDです。

is_category()とin_category()の違い

is_category()は特定のカテゴリーページ(アーカイブ)かどうか、in_category()は特定のカテゴリーに属する投稿かどうかを調べます。今回は個別投稿ページで使用するためin_category()を用います。is_category()は記事一覧ページで使用することが多いです。

タグによる条件分岐

以下、タグによる条件分岐の書き方になります。

<?php if ( has_tag ('x') ) : ?>
//タグIDがxの処理を記述
<?php endif; ?>

条件が複数のときは以下のように記述することも可能です。

<?php if ( has_tag( array('x', 'xx') ) ) : ?>
//タグIDがx、xxの処理を記述
<?php endif; ?>
<?php if ( has_tag ('xx') ) : ?>
//タグIDがxxの処理を記述
<?php elseif ( has_tag ('xxx') ) : ?>
//タグIDがxxxの処理を記述
<?php else: ?>
//タグIDがxx、xxx以外の処理を記述
<?php endif; ?>

x、xx、xxxはタグID。タグIDの調べ方はワードプレス管理画面の「投稿」→「タグ」から各タグの詳細ページを開きます。ブラウザのURLの”tag&tag_ID=”に続く数字がタグIDです。

is_tag()とhas_tag()の違い

is_tag()は特定のタグページ(アーカイブ)かどうか、has_tag()は特定のタグを持つ投稿かどうかを調べます。今回は個別投稿ページで使用するためhas_tag()を用います。is_tag()は記事一覧ページで使用することが多いです。

おわりに

以上、ワードプレスの個別投稿ページをカテゴリーやタグによる条件分岐でカスタマイズする方法でした。

ここで紹介した基本的な条件分岐のコードを理解しておくだけでもカスタマイズの幅が広がると思います。

条件分岐の書き方はこれら以外にもいろいろあるので興味のある人は調べてみてください。