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

「ウィジット」を表示を、特定のページに限定
する設定について説明しています。
サイトで、
特定のカテゴリーのみ
に、
ウィジットの表示を制御したい
場合があります。
その際は、
プラグインの利用
もしくは、
phpでスクリプトでの対応(条件分岐)
のいずれかになります。
それぞれに関して、下記に記載します。
プラグインの利用

主なプラグインとしては、
Widget Options
や
widget logic
があります。
「Widget Options」は、下記のサイトに詳しい説明があります。
Widget Options

カテゴリーでの表示制御は、
ロジック(is_category()など)
を記載して対応する方法、もしくは、
有料で、機能アップ(カテゴリー名も表示されるので、それをチェックする)
になります。
有料の場合は、海外のサイトなので、若干、不安な面もあります。
widget logic
「widget logic」のほうは、ここ数年、更新がされていないので、運営面を考えると、これはこれで、不安な部分ではあります。
下記サイトに詳しい説明があります。
こちらも、ロジック(is_category()など)での制御になります。
利用の際は、ウィジットの管理画面の表示の関係で、Classic Widgetsというプラグインも使用します。
phpでスクリプトでの対応(条件分岐)

phpでスクリプトの場合は、ハードルが高い方法になります。
間違えると、システム面に影響しますので、要注意です。
また、直接phpファイルを編集すると、リスクが高くなりますので、
Code Snippets
というプラグインを利用されることをお勧めします。
このプラグインでは、「functions.php」に最初から記述されてあるPHPコードと、新たに追加したPHPコードを別々に分けて管理することができます。
> 【参考】functions.phpファイルに安全に追記できるプラグイン「Code Snippets」
実際に記載する内容に関しては、下記のサイトを参考にしています。
記載するスクリプトの内容
「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」が適切となると考えられます。
●●の箇所
●●の箇所は、
ウィジットのID
を記載します。
つまり、制御させたいウィジットのIDを記載するわけです。
ウィジットのIDは、
ページのソース
をみて、該当のウィジットの箇所に記載のIDを確認します。
通常、「〇〇-数字」の形式になっています。
スクリプトには、「’〇〇-数字’」の形式で記載します。
また、複数のウィジットの場合は、下記のように、「||」を入れて記述します。
例 if($widget_id=='block-18'||'block-17')
ただ、サイトの設定状況によっては、他のウィジットへ動作的な影響するケースが考えられます。
その場合、その原因を調べて、対応するという方法もありますが、専門的な知識が必要となります。
対応が難しい場合は、状況に応じて、プラグインでの対応でもよいでしょう。
以上、特定カテゴリーのみに「ウィジット」を表示させる場合の説明でした。
