WordPressにおいて、メッセージや広告など、カテゴリー別に異なる内容を表示したい時があります。
本記事では、関数「in_category()」を使って、カテゴリーごとに異なる内容を表示する方法をご紹介します。
テンプレートに組み込むのではなく、ショートコードを利用します。ウィジェットにショートコードが記載できる場合に汎用性が高まります。
関数「in_category()」
条件武器に関する関数「in_category()」は、そのページが指定したカテゴリーに含まれるかどうかを判別します。
例えば
if(in_category('1'))
のようにカッコの中にID(数字)を設定すれば、そのページがカテゴリーID「1」に属している時に、その後に続く内容を実行することができます。
詳しいリファレンス等については下記よりどうぞ。
カテゴリーIDを調べる
条件分岐を設定するため、カテゴリーのIDを調べておきます。
WordPress管理画面の「投稿」から「カテゴリー」を選びます。
表示されたカテゴリーの中から、IDを知りたいカテゴリーの上にマウスオーバーすると、リンクが表示されます(Chromeの場合)。その中から「tag_ID=」に続く数字が、そのカテゴリーのIDです。
functions.phpの準備
テーマのfunctions.phpにショートコードを記載する準備です。
なお、以下内容の導入については自己責任でお願いします。当記事の記載内容がもとでWordPressが動かなくなっても責任を持てませんので、あらかじめご了承ください。
テスト環境でのテストや、バックアップを取った上での反映をオススメします。また子テーマの利用もあわせてオススメします。私環境は子テーマを利用しています。
話を戻してfunctions.phpへのショートコードの追加。
WordPressは4.9.xぐらいから、管理画面の「テーマの編集」からphpファイルの更新をしようとすると、
致命的なエラーをチェックするためにサイトと通信できないため、PHP の変更は取り消されました。SFTP を使うなど、他の手段で PHP ファイルの変更をアップロードする必要があります。
というアラートが表示され、管理画面からの更新ができなくなりました。
なので私はFTPソフトで子テーマのfunctions.phpをダウンロードし、テキストエディタで編集、再度FTPソフトでアップロード、という手順を取っています。
ただしこの方法ではPHPの記述に対するチェックが働かず、下手をすればブログ画面が真っ白、という恐ろしい事態になる可能性も。
なのでアップロード前には、必ず正常に動いている状態のfunctions.phpのバックアップを取っておき、問題が起きたときにすぐに元に戻せるようにしておきましょう。
なお私はWordPressテーマ「Simplicity2」およびその子テーマを利用。その場合は「/wp-content/themes/simplicity2-child/」以下にfunctions.phpが格納されています。
functions.phpにショートコードを設定
それでは具体的なコードです。functions.phpに以下のショートコード設定を記載します。
function side_bnr_pc_shortcode() { //デフォルト表示 $output_text = 'aaa'; if(is_single()){ if(in_category(000)){ $output_text = 'bbb'; }elseif(in_category(111)){ $output_text = 'ccc'; } } return $output_text; } add_shortcode('side_bnr_pc', 'side_bnr_pc_shortcode');
私はPC用表示のサイドバーに同機能を取り入れたかったので「side_bnr_pc」としていますが、名前はなんでもいいです。
基本的には、デフォルト表示の「output_text」に設定した文字列(この場合は「aaa」)が、ショートコードを入れた部分に表示されます。
ただし個別記事ページかつ、以下に続くカテゴリーに属する記事の場合は、それぞれ設定した文字列が表示される仕組みです。
例えばカテゴリー「000」に属する個別記事ならば「bbb」、カテゴリー「111」に属する個別記事ならば「ccc」が表示されます。
ショートコードの記載
ショートコードの指定は、ブログ記事の任意の箇所に
[side_bnr_pc]
と記載します。
またSimplicity2のように、ウィジェットにショートコードが記載できるテーマであれば、
こんな感じでウィジェットにショートコードを記載すれば、カテゴリーごとにウィジェットの中身を変更することができます。
まとめ
以上、WordPressでショートコードを利用して、カテゴリー別に異なる内容を表示する、でした。
functions.phpを編集するということで多少の注意は必要ですが、ショートコードにしておくことで一括管理できるので便利です。またウィジェットと組み合わせることでサイドバー記事下など、任意の場所に簡単に挿入できるのも便利です。
本ブログはレンタルサーバー「エックスサーバー」にて稼働中です。
公式サイト:エックスサーバー
コメント