
トップページ、カテゴリーページ、記事ページごとで表示したいウィジェットを分けたい場合や、特定の種類のページにはウィジェットを表示させたくない場合があります。
そのような場合は、以下で紹介するどちらかのプラグインを利用してウィジェットの表示対象ページを限定させることができます。
クラシックウィジェットに戻す
DigiPress はクラシックテーマのため、操作性や視認性を考慮し、まずはクラシックウィジェット画面に戻します。
カスタマイザー対応テーマの場合
【外観】→【カスタマイズ】にてカスタマイザーを開き、「サイト一般設定」→「ウィジェット画面設定」から “クラシックウィジェット画面に戻す” にチェックします。

テーマ独自設定画面テーマの場合
DigiPressメニューの【詳細設定】→【サイト一般動作設定】→「ウィジェット画面設定」から “クラシックウィジェット画面に戻す” にチェックします。

クラシックウィジェットに戻したら、以下のプラグインをインストールします。
Widget Options のインストール
WordPressのプラグインの「新規追加」画面から「Widget Options」と検索して管理画面からインストールし、有効化しましょう。

プラグインオプションの有効化
「設定」→「Widget Options」からプラグインの設定画面を開き、最低限必要なオプションを有効化しておきます。
- Pages Visibility (※要設定 後述)
- Display Logic (条件分岐タグ指定による高度な表示制御)
- Import & Export Widgets (ウィジェットのバックアップ、リストア)

表示制御(Pages Visibility)の設定
有効化したオプションのうち、「Pages Visibility」の「Configure Settings」ボタンをクリックし、表示制御に関する詳細設定を行います。

以下の詳細オプションにすべてチェックし、「Save Settings」ボタンをクリックして保存します。

各ウィジェットの簡易表示制御
ウィジェット画面にて表示対象ページを限定したいウィジェットを開くと、一番下に「Widget Options」プラグインにて追加された設定項目が追加されています。
プリセットの表示条件から選ぶ場合
トップページのみなど単純な表示条件の場合は、予めプラグイン側でフォームから条件を選択するのみで制御できます。

例えば、該当ウィジェットをトップページのみに表示したい場合は、「Hide/Show」で “Show on checked pages” (チェックしたページで表示)を選び、「Misc」タブで “Home/Front” にチェックをします。
“Hide on checked pages” を選ぶと、チェックしたページではウィジェットが非表示になります。
「Post Types」タブを開くと、固定ページまたは投稿タイプ別で表示制御を指定できます。

「Taxonomies」タブを開くと、カテゴリー別で表示制御を指定できます。

条件分岐タグによる高度な表示制御をする場合
ウィジェットの表示制御がより複雑な条件になる場合、WordPressが提供する条件分岐タグを直接指定して独自の表示条件を指定することができます。
表示条件を登録する
WordPress の条件分岐タグを指定した表示条件をプラグインに追加するには、「設定」→「Widget Options Snippets」を開きます。

Logic Snippets はプラグインで組み込まれたカスタム投稿タイプであり、WordPress 標準の「投稿」や「固定ページ」と同様の操作で記事(条件)を投稿(登録)することでウィジェットごとの表示条件を管理します。
もしくは、ウィジェット下部の Widget Options パネル内の以下のマークのタブを開き、「Logic」の “Manage Logic Snippets” ボタンをクリックして先述の「Widget Options Snippets」を開きます。

Widget Options Snippets を開いたら、「Add New Snippet」ボタンをクリックしてエディタを開き、条件タグを使用した条件コード(PHP)を追加します。

“Snippet Code” に表示条件を示すシンプルな PHP コードを入力します。
“Description” はこのスニペットの簡単な説明を記述します(任意)。
条件タグの記述方法については次項で紹介しています。

ウィジェットに表示条件を指定
Widget Options Snippets に表示条件を登録したら、ウィジェット画面を表示して対象ウィジェットを開き、Widget Options 用のエリアにて “Display Logic Snippet” から登録済みの表示条件を選んでウィジェットを保存します。

条件タグの記述方法
条件分岐タグ( Logic )の記述方法は、以下を参考にしてください。
条件分岐タグ指定例
- トップページのみに表示する場合(2ページ目以降は非表示)
-
return is_home() && !is_paged();
現行の Widget Options では
is_paged()タグは許可リストに登録されていないため、使用できません。
条件分岐タグ基本解説
基本的な表示条件指定例
- フロントページのみに表示する場合
-
return is_front_page() && !is_paged();
現行の Widget Options では
is_paged()タグは許可リストに登録されていないため、使用できません。 - 投稿ページのみに表示する場合
-
return is_single();
- 固定ページのみに表示する場合
-
return is_page();
- アーカイブページのみに表示する場合
-
return is_archive();
アーカイブページとは、カテゴリー、タグ、投稿者、日付アーカイブに属する記事の一覧が並ぶページのことです。
- カテゴリーページのみに表示する場合
-
return is_category();
- タグページのみに表示する場合
-
return is_tag();
- 日付アーカイブページのみに表示する場合
-
return is_date();
- 投稿者のアーカイブページのみに表示する場合
-
return is_author();
- ログイン中のユーザーのみに表示する場合
-
return is_user_logged_in();
- 検索結果ページのみに表示する場合
-
return is_search();
- カスタム投稿タイプのアーカイブのみに表示する場合
-
return is_post_type_archive();
カスタム投稿タイプとは、投稿ページや固定ページとは別に、WordPress に独自の属性の投稿タイプを組み込んだものです。
- 任意のカスタム投稿タイプのみに表示する場合
-
return get_post_type() === 'カスタム投稿タイプのスラッグ';
“===” は左右の条件が等しいことを意味しています。
- 任意のカスタム投稿タイプのみ表示しない場合
-
return get_post_type() !== 'カスタム投稿タイプのスラッグ';
“!==” は左右の条件が等しくないことを意味しています。
これらの条件分岐タグについて基本が理解できたら、以下の応用編の条件指定方法を覚えるとさらに細かな条件を指定できます。
【応用編】条件分岐タグ指定
さらに条件を絞り込んで、IDを指定することで特定のカテゴリーや任意の固定ページのみ、といった条件も設定することができます。
- トップページ以外に表示(トップページだけ非表示)する
-
return !is_home();
先頭に ! を付けると、否定(〜でない)の意味になります。
- IDが 11,23, または 120 の投稿ページのみに表示する
-
return is_single( array( 11, 23, 120 ) );
ID確認方法ID表示に対応したテーマでは、【投稿】→【投稿一覧】を開くと、各投稿のIDを確認できます。

投稿一覧にIDが表示されないテーマの場合は、以下にて確認できます。

または、管理画面からIDを確認できるプラグイン「ShowID for Post/Page/Category/Tag/Comment」をご利用ください。
- IDが 11、または投稿スラッグが “hello-my-friend” の投稿ページのみに表示する
-
return is_single( array( 11, 'hello-my-friend' ) );
- カテゴリーIDが 10 のカテゴリーページのみに表示する
-
return is_category( 10 );
ID確認方法ID表示に対応したテーマでは、【投稿】→【カテゴリー】を開くと、各カテゴリーのIDを確認できます。

カテゴリー一覧にIDが表示されないテーマの場合は、以下にて確認できます。

または、管理画面からIDを確認できるプラグイン「ShowID for Post/Page/Category/Tag/Comment」をご利用ください。
- カテゴリースラッグが “plugins” のカテゴリーページのみに表示する
-
return is_category( 'plugins' );
- カテゴリーIDが 10、またはカテゴリースラッグが “plugins”, “themes”, “blog” のカテゴリーページのみに表示する
-
return is_category( array( 10, 'plugins', 'themes', 'blog' ) );
- 検索結果ページ または カテゴリーID が “20” のカテゴリーページの場合のみに表示する
-
return is_search() || is_category( 20 );
「条件A || 条件B」は、「条件A または 条件B」の意味になります。
- カテゴリーページ以外で、かつ投稿スラッグが「sample-post」の記事ページ以外の場合に表示する
-
return !is_category() && !is_single( 'sample-post' );
「条件A && 条件B」は、「条件A かつ 条件B」の意味になります。
- お知らせ用(スラッグ:news)カスタム投稿タイプのアーカイブとその単体ページの場合だけに表示する
-
return is_post_type_archive( 'news' ) || get_post_type() === 'news';
さらに細かな条件や条件分岐タグについての説明は WordPress の公式ドキュメントを参考にしてください。
Widget Options で許可されていない条件分岐タグについて
Widget Options は危険な eval を防ぐため、コードを許可した関数名だけ通します(4.x 系の Display Logic セキュリティ対応)。
例えば以下の条件分岐タグはいずれも Widget Options の許可リストにないためスニペットとして使用できません。
許可されていないタグを条件に指定した場合、スニペットを保存しようとすると以下のエラーが表示されます。
Snippet Validation Failed
The snippet contains errors and has been saved as Draft. Please fix the following issues:
Security Error:Expression contains disallowed function calls.
Fix the errors above and save again to publish the snippet.
これらのような許可されていない条件分岐タグを Widget Options で使用できるようにするには、以下のコードをコピーして PHP ファイル (widget-options-allow-conditionals.php など) として保存し、WordPress プラグインフォルダ (/wp-content/plugins) に追加して有効化してください。
<?php
/**
* Plugin Name: Widget Options で使用可能な条件分岐タグを追加
* Plugin URI: https://digipress.info/manual/how-to-use-widget-logic/
* Description: Widget Options の Logic Snippets で、標準では許可されていない WordPress 条件分岐タグ(is_paged など)を使えるようにします。
* Version: 1.0.0
* Author: digistate co.,ltd.
* Author URI: https://digipress.info/
* License: GPL2+
* License URI: https://www.gnu.org/licenses/gpl-2.0.txt
* Requires Plugins: widget-options
* Text Domain: widget-options-allow-conditionals
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Widget Options の Logic Snippets 許可リストへ、よく使う条件分岐タグを追加する。
*
* @param array $allowed_functions プラグイン側の許可関数リスト。
* @return array
*/
function woac_allow_conditional_tags( $allowed_functions ) {
if ( ! is_array( $allowed_functions ) ) {
$allowed_functions = array();
}
/**
* 追加したい関数名があれば、この配列に足してください。
* 例: 'is_shop', 'is_product', 'is_woocommerce'
*/
$extra_functions = array(
'is_paged',
'is_post_type_archive',
'is_tax',
'is_sticky',
'is_page_template',
'in_category',
'has_tag',
'has_category',
'has_term',
'has_excerpt',
'has_post_thumbnail',
'get_queried_object_id',
'get_query_var',
);
return array_values(
array_unique(
array_merge( $allowed_functions, $extra_functions )
)
);
}
add_filter( 'widgetopts_allowed_php_functions', 'woac_allow_conditional_tags' );
PC用とモバイル用で表示ウィジェットを分ける方法はこちらを参考にしてください。

