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

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

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')

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

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

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