WidgetLogicで設定!WordPressの投稿ページ毎にウィジェットを切替

WordPressのページごとにサイドバーなどのウィジェットを切り替えたい場合、プラグインを使った方法が簡単でおすすめです。

今回紹介するプラグイン「Widget Logic」使えば、カテゴリー別やタグ別の他、投稿ページを個別に指定して、サイドバーやサイト最下部などにあるウィジェットの表示・非表示を切り替えることができます。

【Widget Logicの問題点】

現在使用しているWordPressのテーマによっては、Widget Logicが正常に動かない場合があります(非表示の設定なのに表示されてしまうなど)。今後改善されるかもしれませんが、ダメなら似た機能を持つプラグイン「WooSidebars」の使用を検討してみてください。

>>【参考記事】:簡単!WordPressウィジェット切替プラグインWooSidebarsの使い方

ウィジェット表示切替のためにPHPファイルをいじらずに済む

プラグインを使った方法のメリットは、なんといってもWordPressのPHPファイルを直接触らずに済むことです。

PHPファイルに手を加えれば、投稿ページのウィジェット表示を自由に切り替えられます。

とはいえ、PHPをいじるにはプログラミングの知識が必須ですし、PHPファイルの記述を間違えると高確率でサイトの表示に不具合が出るため、できれば避けたい人が多いと思います。

今回紹介するWidget Logicを使えば、PHPファイルに直接プログラムを書かずに済むので安心です。

元の表示に戻したくなったら、設定を変えるかプラグインを止めるだけとあり、管理がとても簡単。専門的な技術をほとんど必要としません。

それでは早速、「Widget Logic」の使い方を見てみましょう。

WordPressプラグイン「Widget Logic」の入手から使い方まで

インストールしよう

WordPressの管理画面に入り、メニューのプラグインから新規追加画面を開きましょう。

「Widget Logic」で検索すると該当のプラグインが登場しますので、インストールのボタンをクリックした後、有効化してください。

Widget Logicインストール画面

ウィジェット管理画面でWidget Logicの設定

Widget Logicを有効化したら、WordPressのウィジェット管理画面を開きます。

サイドバーや記事下などの位置に取り付けた、ウィジェットの各パーツを見ます。パーツがまだ何も取り付けられてなかったら、検索や最新の記事など、適当なパーツを取り付けておきましょう。

パーツを編集する画面を開くと、「ウィジェットのロジック」と書かれた項目が新しく追加されているのがわかります。

Widget Logic ウィジェットのロジック

このウィジェットのロジックで、Widget Logicの設定を進めていく流れです。

表示させたいウィジェットパーツに「条件分岐タグ」を記述

Widget Logicの設定では、WordPress公式が用意する「条件分岐タグ」というものを使って表示を制御します。PHPファイルでプログラミングするときにもよく使われるタグです。

条件分岐タグの種類や使い方の詳しい説明については、WordPressの公式ドキュメントで公開されています。それを参考に作業してみましょう。

>>条件分岐タグ – WordPress Codex 日本語版

一部ですが、以下にWidget Logicで使うことになりそうな条件分岐タグを紹介します。

表示させるための条件分岐タグ

指定したページで、ウィジェットのパーツを表示するためのタグです。

  • is_single() :投稿ページ
  • is_page() :固定ページ
  • is_category() :カテゴリーページ
  • is_tag():タグページ
  • is_home() :サイトのトップページ

非表示にするための条件分岐タグ

タグの先頭に半角の「!」を付ければ、指定したページでウィジェットのパーツを非表示にできます。

  • !is_single() :投稿ページ
  • !is_page() :固定ページ

条件分岐タグの記述例

サイドバーのウィジェット部分に取り付けたパーツを、特定の投稿ページでのみ表示・非表示にする流れでやってみましょう。

パーツの編集画面を開き、ウィジェットのロジックの欄に「is_single()」のタグを入力します。

Widget Logic 条件分岐タグ is_single()

is_single()をそのまま入力した場合、すべての投稿ページに対してこのパーツが表示されます。これを特定の投稿ページだけに絞って表示させたいなら、カッコ内に投稿ページのidスラッグを入力し、制御します。

  • idの場合:is_single('40')
  • スラッグの場合:is_single('test')

内容をクォーテーション(')で囲むのがポイントです。

Widget Logic 条件分岐タグ is_single('id')

投稿ページのidについては、WordPressの管理画面で調べることが可能です。

投稿一覧を開き、指定したい投稿を選んでください。URLを見てみると内部に「post=数字」の文字が見つかると思います。

【URLの例】
https://サイトアドレス/wp-admin/post.php?post=数字&action=edit

この数字部分こそが、その投稿ページが持つ固有のidです。

idやスラッグの他、タイトルでも投稿ページの指定ができます。好みで選べば構いませんが、おすすめはidによる指定です。スラッグやタイトルに比べると、変更しにくいというメリットがあります。

スラッグやタイトルの場合、WordPressの管理画面で誰でも簡単に変更できます。

しかし、スラッグやタイトルを変更すると、Widget Logicに記述したタグも同時に修正しなければウィジェットの表示・非表示設定が解除されてしまうため、少し面倒です。

管理を楽にしたいならidで指定しましょう。

もちろん、絶対に変えない!というのであれば、スラッグやタイトルで指定しても構いません。自分の管理しやすい方法を選んでください。

また、1つだけでなく、複数の投稿ページをまとめて指定したい場合、以下のように「array()」を付け足して記述すれば対応してくれます。

is_single(array(40, 101, 129))

is_single(array('test', 'rensyu', 'honban'))

array()で複数のidを指定する場合、idごとにクォーテーションで囲まなくて大丈夫です。スラッグやタイトルは囲む必要があります。

非表示にするときも同じ記述ですが、条件分岐タグの先頭に「!」を付け足すのを忘れないようにしましょう。

!is_single('25')

!is_single(array('tamagawa-01', 'hiruyasumi'))

Widget Logic 条件分岐タグ is_single(array(id,id))

こんな感じに指定します。投稿ページに限らず、固定ページやカテゴリーページなど、記述方法はどれも同じです。

指定が終わったら、最後に保存ボタンを押しましょう。

指定した投稿ページを開いてみて、ウィジェットの表示が切り替わっているか確認してみてください。

切り替わっていれば成功です。できていなければWidget Logicの設定が間違っていないか、見直してみます。

それでもダメなら、使用中のテーマもしくは使用中のプラグインとWidget Logicの相性が悪いのかもしれません。

別のプラグイン「WooSidebars」もおすすめ

今回は「Widget Logic」を紹介しましたが、「WooSidebars」というWidget Logicと同じような機能を持つプラグインも存在します。

WooSidebarsだと投稿ページごとに指定する切り替えはできないものの、カテゴリーやタグ、固定ページごとなどを指定し、ウィジェットの表示切り替えができます。

Widget Logicのほうが高度な条件設定を行えますけど、WooSidebarsは条件分岐タグを使う必要がなく、項目にチェックを入れるだけなので、特別な知識がいりません。

ある程度数の多い投稿ページをまとめて管理する場合、カテゴリーやタグなどを駆使すればWooSidebarsの機能でも十分で、使いやすく感じられると思います。

Widget Logicの管理に手こずるようなら、試しにWooSidebarsを使ってみてください。プラグインの使い方については、以下の記事で紹介しています。

>>【関連記事】:簡単!WordPressウィジェット切替プラグインWooSidebarsの使い方