WordPressプラグイン「Widget Logic」のよく使う条件分岐まとめ

WordPressプラグイン「Widget Logic」のよく使う条件分岐まとめ

ウィジェットの表示・非表示を自由にカスタマイズできるプラグイン「Widget Logic」の、主要な条件分岐をまとめました。

「is_category」や「is_tag」など、個人的につまずいたポイントの解決策も記載しています。

目次

「Widget Logic」の条件分岐

is_single()投稿で表示
is_single(1)特定の投稿で表示
is_single(array(1,2,3))複数の投稿で表示
is_page()固定ページで表示
is_page(1)特定の固定ページで表示
is_page(array(1,2,3))複数の固定ページで表示
in_category(1)特定のカテゴリーで表示(スラッグ名でも可)
in_category(array(1,2,3))複数のカテゴリーで表示(スラッグ名でも可)
has_tag(1)特定のタグで表示(スラッグ名でも可)
※ウィジェットエリアによって表示されたり、されなかったり
has_tag(array(1,2,3))複数のタグで表示(スラッグ名でも可)
※ウィジェットエリアによって表示されたり、されなかったり
is_category(1)特定のカテゴリー一覧ページで表示(スラッグ名でも可)
is_category(array(1,2,3))複数のカテゴリー一覧ページで表示(スラッグ名でも可)
is_tag(1)特定のタグ一覧ページで表示(スラッグ名でも可)
is_tag(array(1,2,3))複数のタグ一覧ページで表示(スラッグ名でも可)
is_single(array(1,2,3)) || is_page(array(1,2,3))特定の投稿と特定の固定ページで表示
in_category(1) && has_tag(1)特定のカテゴリーかつ特定のタグで表示
is_home()トップページで表示
is_front_page() && !is_paged()フロントページで表示
is_archive()アーカイブページで表示
is_search()検索結果ページで表示
is_404()404ページで表示
is_paged()2ページ目以降に表示(アーカイブや分割記事)
wp_is_mobile()スマホ・タブレットで表示
!wp_is_mobile()PCで表示

先頭に「!」を付ければ非表示

is_single(1)IDが1の投稿ページで表示
!is_single(1)IDが1の投稿ページで非表示
IDが1の投稿ページ以外で表示

便利な機能ですが、指定範囲が狭い条件に付与すると、広域に反映されるので注意。デフォルトで表示されているウィジェットを、特定のページに表示させたくない場合によく使用します。

例えば「!is_404()」で、404ページには広告を表示したくない場合など。

「&&」と「||」で条件を絞り込む

★★ && ◆◆★★かつ◆◆の場合に表示
★★ || ◆◆★★もしくは◆◆の場合に表示

「&&」はより厳しい条件に絞ることができ、「||」はより柔軟な条件に広げることができる。

is_category()とin_category()の違い

カテゴリーで表示・非表示させる場合、「is_category()」だと機能しなかった。プラグイン(Widget Logic)のバグかと思ったけど、PHPの条件分岐には「is」と「in」があったことを思い出して、「in_category() 」で試すと成功。

以下でも解説していますが、「is」と「in」は「どこのページに表示するウィジェットなのか?」で使用シーンが異なり、「is」を使う場合はアーカイブページ、「in」は投稿ページや固定ページとなります。

is_category() とは?

is_category(‘blog’);
タグの種類:条件分岐タグ
戻り値:tureかfalse
機能:表示されている「アーカイブ」が、引数で指定されたカテゴリかどうかチェックする。
この引数のとき、表示されている「アーカイブ」のカテゴリスラッグが「blog」の場合、trueを返す。

「このページはカテゴリ◯◯のアーカイブページですか?」と尋ねたとき、YesかNoかで返答をくれるのが、is_category()。

in_category() とは?

in_category(‘1’);
タグの種類:条件分岐タグ
戻り値:tureかfalse
機能:現在の「投稿(記事)」が、引数で指定されたカテゴリに属しているかどうかをチェックする。
この引数のとき、現在の「投稿(記事)」がカテゴリID「1」に属している場合、trueを返す。

「この記事はカテゴリ◯◯に属していますか?」と尋ねたとき、YesかNoかで返答をくれるのが、in_category()。

is_tag()とhas_tag()の使い分け

上記で説明した「is_category()とin_category()の違い」と同様に、タグ(tag)に関してもちょっと変則的になっている。

カテゴリーの応用で「is_tag()」はタグ一覧ページでの表示の条件分岐ですが、投稿ページや固定ページに表示させる場合は「in_tag()」ではなく「has_tag()」を使う。

ただ、この「has」がちょっと厄介で、ウィジェットエリアによっては制御できなくなる。

ウィジェットのサイドバーで「has_tag()」を使用すると、指定したタグを含むページ以外に、指定したタグ一覧ページ、指定したタグ以外の一覧ページに表示される。また、IDかスラッグかでも表示が異なる。

ただ、ウィジェットエリアが「記事内」であれば、正常に機能する。

おそらく、サイドバーやフッターは共通パーツとして読み込まれ、記事内は投稿ページや固定ページなので特定パーツとして読み込まれている、という違いによるものかと。あとは、使用テーマの影響もあると思われる。

「Widget Options」の利用でもOK

「Widget Logic」はシンプルで余計な機能がなく使いやすいのですが、開発者による更新が数年行われていないし、謎のスペースが入るなどのバグもあります。

ですので、同様のウィジェットの条件分岐が可能な「Widget Options」の利用がおすすめです。

機能が多い点があまり好きではありませんが、視覚的にチェックボックスで設定できる他、「Widget Logic」と同じように条件分岐の記述でも設定可能。

ホームページ制作ならお任せください
ウェブエンハンサー for サブスク

月額定額制(サブスク)の「ウェブエンハンサー for サブスク」なら、1日あたり250円!ホームページ制作に必要な写真撮影や文章作成も無料!月3回の修正更新、Googleマップの登録、アクセス解析など充実のサポート!お客様の大切な時間を無駄にはさせません!

  • URLをコピーしました!
目次