【WordPressカスタマイズ】ダッシュボードウィジェットを設定ファイルで表示・非表示コントロールする方法

WordPressのダッシュボードには「サイトの概要」「アクティビティ」「クイックドラフト」「イベントとニュース」など、さまざまなウィジェットが初期状態で表示されます。

ですが、使わないウィジェットが多く並んでいると、情報が散らかって見づらいと感じる方も多いのではないでしょうか?

今回は、こうした不要なダッシュボードウィジェットを「設定ファイル」でまとめて制御する方法をご紹介します。


本記事でできること

  • WordPress管理画面のウィジェット表示を設定ファイルでON/OFFできるようになる
  • 複数のウィジェットを一括管理して保守性を向上
  • functions.php に長々と記述せず、すっきりした構成にできる

1. ディレクトリ構成(例)

まずは以下のような構成にします。

your-theme/
├── functions.php
└── settings/
    └── dashboard-settings.php

settings/dashboard-settings.php にウィジェットのON/OFF設定を記述します。


2. 設定ファイルの作成:dashboard-settings.php

以下のコードを your-theme/settings/dashboard-settings.php に保存してください。

<?php
// ダッシュボードに表示するウィジェットのON/OFF設定
// true = 表示、false = 非表示

return [
    'dashboard_primary'      => false, // WordPress イベントとニュース
    'dashboard_quick_press'  => false, // クイックドラフト
    'dashboard_site_health'  => true,  // サイトヘルスステータス
    'dashboard_activity'     => false, // アクティビティ
    'dashboard_right_now'    => false, // サイトの概要
];

表示したいものは true、非表示にしたいものは false に設定します。


3. functions.php に処理を追加

次に、functions.php に以下のコードを追加します。

/**
 * ダッシュボードのウィジェットを設定ファイルに基づいて非表示にする関数
 *
 * 設定ファイル(settings/dashboard-settings.php)で true/false を指定し、
 * ダッシュボードの各ウィジェットの表示・非表示を切り替える。
 *
 * 使用するウィジェットIDとcontextは内部で定義したマッピングに基づく。
 * この関数は wp_dashboard_setup アクションにフックされる。
 */
function custom_remove_dashboard_widgets() {
    // 設定ファイルのパスを指定
    $settings_path = get_template_directory() . '/settings/dashboard-settings.php';

    // 設定ファイルが存在しない場合は処理を終了
    if (!file_exists($settings_path)) return;

    // 設定内容を配列として取得(ウィジェットID => true/false)
    $widget_settings = include $settings_path;

    // 表示制御対象のウィジェットIDとその表示位置(context)のマッピング
    $widget_map = [
        'dashboard_primary'      => ['dashboard_primary', 'side'],     // WordPress イベントとニュース
        'dashboard_quick_press'  => ['dashboard_quick_press', 'side'], // クイックドラフト
        'dashboard_site_health'  => ['dashboard_site_health', 'normal'], // サイトヘルス
        'dashboard_activity'     => ['dashboard_activity', 'normal'],  // アクティビティ
        'dashboard_right_now'    => ['dashboard_right_now', 'normal'], // サイトの概要
    ];

    // 設定に基づいてウィジェットを非表示にする処理
    foreach ($widget_settings as $key => $enabled) {
        if (isset($widget_map[$key]) && !$enabled) {
            [$id, $context] = $widget_map[$key];
            remove_meta_box($id, 'dashboard', $context);
        }
    }
}

// WordPress ダッシュボードのセットアップ時に関数を呼び出す
add_action('wp_dashboard_setup', 'custom_remove_dashboard_widgets');

4. 各ウィジェットのIDとcontext(位置)

ウィジェット名IDcontext
WordPress イベントとニュースdashboard_primaryside
クイックドラフトdashboard_quick_pressside
サイトヘルスステータスdashboard_site_healthnormal
アクティビティdashboard_activitynormal
サイトの概要dashboard_right_nownormal

5. 動作確認

WordPress管理画面を開き直してみてください。
設定ファイルで false にしたウィジェットは非表示になっているはずです。

例えば、アクティビティと概要だけ表示したい場合は次のように設定します。

return [
    'dashboard_primary'      => false,
    'dashboard_quick_press'  => false,
    'dashboard_site_health'  => false,
    'dashboard_activity'     => true,
    'dashboard_right_now'    => true,
];

6. 応用したい方へ(発展編)

以下のような拡張も可能です。

  • 設定画面からウィジェットの表示/非表示をGUIで切り替える
  • ロールやユーザーごとに制御を変える
  • プラグインとして再利用可能な形にまとめる

こうした機能も必要であれば、別記事で詳しくご紹介できます。


まとめ

WordPressのダッシュボードは、設定ファイルを使うことで柔軟にカスタマイズ可能です。

  • 管理画面の視認性が向上し、使いやすくなる
  • コードの保守が簡単になる
  • クライアント案件や複数人での運用にも最適

この方法を導入して、より快適でスッキリしたWordPress管理画面を実現してみてください。

コメント

タイトルとURLをコピーしました