ワードプレスの設定代行サービスのご案内! ご相談は無料です!
特定カテゴリーのみに「ウィジット」を表示させる。

特定カテゴリーのみに「ウィジット」を表示させる。

2023年4月11日

「ウィジット」を表示を、
 特定のページに限定
する方法を知りたい。

「ウィジット」を表示を、特定のページに限定
する設定について説明しています。


サイトで、
 特定のカテゴリーのみ
に、
 ウィジットの表示を制御したい
場合があります。

その際は、
 プラグインの利用
もしくは、
 phpでスクリプトでの対応(条件分岐)
のいずれかになります。

それぞれに関して、下記に記載します。

スポンサーリンク

プラグインの利用

ワードプレス設定代行

主なプラグインとしては、
 Widget Options
や
 widget logic

があります。

「Widget Options」は、下記のサイトに詳しい説明があります。

Widget Options

トップページ、カテゴリーページ、記事ページごとで表示したいウィジェットを分けたい場合や、特定の種類のページにはウィジェットを表示させたくない場合があります。 そ…
digipress.info

カテゴリーでの表示制御は、
 ロジック(is_category()など)
を記載して対応する方法、もしくは、
 有料で、機能アップ(カテゴリー名も表示されるので、それをチェックする)
になります。

有料の場合は、海外のサイトなので、若干、不安な面もあります。

widget logic

「widget logic」のほうは、ここ数年、更新がされていないので、運営面を考えると、これはこれで、不安な部分ではあります。

下記サイトに詳しい説明があります。

こちらも、ロジック(is_category()など)での制御になります。
利用の際は、ウィジットの管理画面の表示の関係で、Classic Widgetsというプラグインも使用します。

phpでスクリプトでの対応(条件分岐)

ワードプレス設定代行

phpでスクリプトの場合は、ハードルが高い方法になります。

間違えると、システム面に影響しますので、要注意です。
また、直接phpファイルを編集すると、リスクが高くなりますので、
 Code Snippets
というプラグインを利用されることをお勧めします。
このプラグインでは、「functions.php」に最初から記述されてあるPHPコードと、新たに追加したPHPコードを別々に分けて管理することができます。

 > 【参考】functions.phpファイルに安全に追記できるプラグイン「Code Snippets」

実際に記載する内容に関しては、下記のサイトを参考にしています。

「WordPressの一部のウィジェットを特定ページに表示したくない!」ということはありませんか?プラグインなし、PHPの記述で非表示にする方法を記します。応用…
hanikolog.com

記載するスクリプトの内容

「functions.php」に記載するサンプルスクリプトは、下記になります。になります。

function remove_specific_widget($sidebars_widgets){
    if(!is_admin() && !(in_category('★★'))){
        foreach($sidebars_widgets as $widget_area => $widget_list){
            foreach($widget_list as $pos => $widget_id){
                if($widget_id=='●●'){
                    unset($sidebars_widgets[$widget_area][$pos]);
                }
            }
        }
    } 
    return $sidebars_widgets;
}

add_filter('sidebars_widgets','remove_specific_widget');

★★の箇所と、●●の箇所を状況にあわせて変更することになります。

★★の箇所▼

 ★★のカテゴリーだけ「表示する」というロジックです。

 ★★は、カテゴリーIDや、カテゴリーのスラッグを記載します。

 

カテゴリーIDは、

  管理画面>カテゴリー

 の箇所で、カテゴリーの箇所に、カーソルを移動させると、ブラウザの下に、長い文字列が表示されます。
その中の、「ID=〇〇」の箇所が、IDになります。
また、IDでの記載の際には、「’●’」か、「●」かで、動作に影響がでる可能性もあるようです。

カテゴリーのスラッグは、画面に表示されています。

また、スクリプトのなかのcategoryに関する記述については、
 in_category
にしています。

カテゴリーの条件分岐では、「is_category」や「in_categor」を使用しますが、微妙に違います。

実際、上記スクリプトでは、「is_category」では、うまく動作しなかったのですが、「in_categor」では動作します。

「in_categor」は、
 カテゴリに属しているかどうかをチェックする
ということなので、子カテゴリーも含む場合は、「in_categor」が適切となると考えられます。

栃木県宇都宮市でホームページ制作/Webサイト制作/Webシステム開発を行なっています。ホームページ制作. 企画・設計・デザイン・コーディングまでトータルに対応…
insource-mkd.co.jp

●●の箇所

●●の箇所は、
 ウィジットのID
を記載します。

つまり、制御させたいウィジットのIDを記載するわけです。

ウィジットのIDは、
 ページのソース
をみて、該当のウィジットの箇所に記載のIDを確認します。

通常、「〇〇-数字」の形式になっています。

スクリプトには、「’〇〇-数字’」の形式で記載します。

また、複数のウィジットの場合は、下記のように、「||」を入れて記述します。

 例 if($widget_id=='block-18'||'block-17')

ただ、サイトの設定状況によっては、他のウィジットへ動作的な影響するケースが考えられます。
その場合、その原因を調べて、対応するという方法もありますが、専門的な知識が必要となります。

対応が難しい場合は、状況に応じて、プラグインでの対応でもよいでしょう。

以上、特定カテゴリーのみに「ウィジット」を表示させる場合の説明でした。