どうも、スマコマのコマ太郎です。
前回の記事で、投稿ページのサイドバーの配置をカテゴリーで制御させたいときに使える「Content Aware Sidebars」プラグインをご紹介しました。前回の記事はこちら > 投稿ページのサイドバーをカテゴリー単位で表示を切り替える方法
その中で「Widget Logic」でも出来るよという話をしましたので、この記事では「Widget Logic」プラグインを使った方法をご紹介してみようと思います。
ぼくは以前、MovableType という CMS(ブログシステム)を使っていたのですが、MovableType ではサイドバーの制御に条件分岐(MTIF)が使えました。
それと同じことが「Widget Logic」プラグインを使うことでできるので、個人的には使いやすいと思っています。ただ条件分岐なのでプログラム的な思考に慣れていないと難しいかもしれませんね。
操作そのものは非常にシンプルです。あとは制御する条件文さえ分かればコピペで対応できるので、例をいくつか挙げておきますね。
もくじ
特定のページのウィジェット表示を制御する
Widget Logic をインストールする
まず「Widget Logic」プラグインをインストールしてください。
Widget Logic
プラグインのインストール方法が分からないときは、こちらをご覧ください。
Widget Logic の使い方
Widget Logic をインストールし、有効化すると各ウィジェットの中にロジックを入力する項目が追加されます。
ウィジェットに追加されたWidget Logic
ウィジェットは、WordPress管理メニューの [外観]-[ウィジェット] で管理することができます。上図はウィジェットの1つを開いたスクリーンショットです。[ウィジェットのロジック] という項目があることが分かります。
このように各ウィジェットに Widget Logic のコントロール項目が追加されているので、制御したいウィジェットを開き、[ウィジェットのロジック] の中に条件文を記述すれば表示をコントロールできるという仕組みです。
よく使う WordPress の条件分岐タグ
WordPress には条件分岐用のタグが用意されており、Widget Logic では、そのタグを利用してウィジェットの表示をコントロールします。
以下、よく利用される条件分岐タグの例です。
is_home() | トップページでのみ表示する |
---|---|
is_front_page() | トップページでのみ表示する(固定ページをフロントページにしている場合) |
is_single(‘ID’) | 特定の投稿ページで表示する。IDなしなら、全投稿ページで表示。 |
is_single(array(5,9,10,11)) | 複数の特定の投稿ページで表示する。 |
is_single() && in_category(‘slug’) | 特定のカテゴリーに属する記事で表示する ※カテゴリーは、ID またはスラッグで指定 |
is_page() | 固定ページで表示する |
is_category(‘slug’) | 特定のカテゴリーページで表示する ※カテゴリーは、ID またはスラッグで指定 |
制御の基本
よく使う条件分岐タグで紹介したものを使えば、基本的には大丈夫かと思いますが、もう少しカスタムしたいときに覚えておきたい条件の制御方法です。
否定
条件分岐タグは、肯定的に使われますが、否定したいときもあります。例えば、トップページでのみ「表示しない」などです。そんなときは条件文の頭に「!」をつけることで条件文を否定文にできます。
例)
!is_home()
トップページでは「表示しない」という意味です。
OR条件(または)
A または B のとき、表示するというときに使う構文が OR条件です。PHP では「||」を使います。
例)
is_single() || is_page()
投稿ページ、または固定ページで表示するという意味です。
AND条件(かつ)
A かつ B という条件のときに使うのが AND条件です。PHP では「&&」を使います。
例)
is_single() && in_category(‘slug’)
投稿ページ、かつ slug というカテゴリーに属する場合で、表示するという意味です。
複数のIDを指定する
よく使う条件文でも使っていますが、複数のIDを指定する場合、array() を使います。
例)
is_category(array(2, slug))
カテゴリーID が2と slug のカテゴリーページで表示するという意味です。
トラブルシューティングのヒント
Widget Logic にも設定があるのですが、基本的にデフォルトで問題ありませんが、テーマ(テンプレート)によっては上手く動作しないことがあります。
そんなとき、設定を変更してみると良いでしょう。
Widget Logic の初期設定
設定は、ウィジェットの管理画面の最下部に上図の設定が追加されています。
問題がテーマによるものかどうかは、まずは他のテーマに切り替えて挙動を見てください。他のテーマで動くようならクエリーのタイミングを設定で変更して挙動を確かめてみましょう。
まとめ
今回は、特定のページのサイドバーの表示を制御する方法として「Widget Logic」プラグインを使った方法をご紹介しました。
基本的によくある条件分岐タグを使えば、何とかなると思います。ほか何か思いつけば条件分岐タグを追加しておきますね。