2026年6月2日

2026年6月2日

WordPressの管理画面をカスタマイズする方法・メニュー整理・ダッシュボード設定

はじめに

「クライアントに渡す管理画面をシンプルにしたい」「不要なメニューや余計なダッシュボードウィジェットを非表示にしたい」——管理画面のカスタマイズにより、クライアントが迷わず使える直感的な管理環境を作れます。

症状・原因

デフォルトのWordPress管理画面は機能が多く、サイト運営者に必要ない項目(外観・プラグイン・ツール等)が表示されてしまいます。ロール別に表示するメニューを制限することで、操作ミスを防ぎ使いやすい管理画面を構築できます。

解決手順

ステップ1:管理メニューを非表示にする

// 特定のロールに対してメニューを非表示にする
add_action( 'admin_menu', function() {
    // 管理者以外は以下のメニューを非表示
    if ( ! current_user_can( 'manage_options' ) ) {
        remove_menu_page( 'themes.php' );           // 外観
        remove_menu_page( 'plugins.php' );          // プラグイン
        remove_menu_page( 'tools.php' );            // ツール
        remove_menu_page( 'options-general.php' );  // 設定
        remove_menu_page( 'edit-comments.php' );    // コメント

        // サブメニューを非表示
        remove_submenu_page( 'options-general.php', 'options-permalink.php' );
        remove_submenu_page( 'themes.php', 'widgets.php' );
    }
} );
// メニューの順序を変更
add_filter( 'custom_menu_order', '__return_true' );
add_filter( 'menu_order', function( $menu_order ) {
    return [
        'index.php',          // ダッシュボード
        'edit.php',           // 投稿
        'upload.php',         // メディア
        'edit.php?post_type=page', // 固定ページ
        'separator1',
        'woocommerce',        // WooCommerce(あれば)
    ];
} );

ステップ2:ダッシュボードウィジェットを整理する

// 不要なダッシュボードウィジェットを削除
add_action( 'wp_dashboard_setup', function() {
    // WordPressデフォルトのウィジェットを削除
    remove_meta_box( 'dashboard_right_now',       'dashboard', 'normal' );
    remove_meta_box( 'dashboard_activity',        'dashboard', 'normal' );
    remove_meta_box( 'dashboard_quick_press',     'dashboard', 'side' );
    remove_meta_box( 'dashboard_primary',         'dashboard', 'side' ); // WordPressニュース
    remove_meta_box( 'dashboard_site_health',     'dashboard', 'normal' );

    // カスタムダッシュボードウィジェットを追加
    wp_add_dashboard_widget(
        'my_dashboard_widget',
        'サイト運営のヒント',
        function() {
            echo '<p>新しい記事を投稿するには「<strong>投稿 → 新規追加</strong>」をクリックしてください。</p>';
            echo '<p>ご不明な点は管理者(admin@example.com)までご連絡ください。</p>';
        }
    );
} );

ステップ3:管理画面のCSSをカスタマイズする

// 管理画面専用のCSSを追加
add_action( 'admin_enqueue_scripts', function() {
    wp_enqueue_style(
        'my-admin-style',
        get_stylesheet_directory_uri() . '/css/admin.css',
        [],
        '1.0'
    );
} );
/* admin.css: 管理画面のカスタムスタイル */

/* 管理バーのカラーを変更 */
#wpadminbar {
    background: #1d2327;
}

/* サイドバーにブランドカラーを適用 */
#adminmenu .wp-has-current-submenu .wp-submenu-head,
#adminmenu .current a.menu-top {
    background: #2271b1;
}

/* エディター幅を広げる */
.wp-admin #wpcontent {
    padding-left: 10px;
}

/* 投稿一覧でステータス列を目立たせる */
.column-status .post-state {
    color: #2271b1;
    font-weight: 600;
}

ステップ4:管理バー(ツールバー)を制御する

// フロントエンドの管理バーを特定ロールにのみ表示
add_action( 'after_setup_theme', function() {
    if ( ! current_user_can( 'edit_posts' ) ) {
        add_filter( 'show_admin_bar', '__return_false' );
    }
} );

// 管理バーのメニューをカスタマイズ
add_action( 'admin_bar_menu', function( $wp_admin_bar ) {
    // 不要なメニューを削除
    $wp_admin_bar->remove_node( 'wp-logo' );       // WordPressロゴ
    $wp_admin_bar->remove_node( 'comments' );      // コメント
    $wp_admin_bar->remove_node( 'new-content' );   // 新規

    // カスタムメニューを追加
    $wp_admin_bar->add_node( [
        'id'    => 'my-site-link',
        'title' => 'サイトを確認',
        'href'  => home_url(),
        'meta'  => [ 'target' => '_blank' ],
    ] );
}, 999 );

ステップ5:管理画面の通知(Notice)を制御する

// 特定の管理画面通知を非表示にする
add_action( 'admin_head', function() {
    if ( ! current_user_can( 'manage_options' ) ) {
        // 更新通知を管理者以外に非表示
        echo '<style>
        #wpbody-content .notice:not(.my-notice),
        .update-nag,
        #wp-admin-notice-list {
            display: none !important;
        }
        </style>';
    }
} );

// 自前の通知を追加
add_action( 'admin_notices', function() {
    $screen = get_current_screen();
    if ( $screen->id !== 'edit-post' ) return;

    echo '<div class="notice notice-info my-notice is-dismissible">';
    echo '<p>記事を公開する前にプレビューで確認しましょう。</p>';
    echo '</div>';
} );

注意事項

  • メニューを非表示にしても、URLを直接入力すればアクセスできます。本当にアクセスを制限するにはcurrent_user_can()チェックとともにwp_die()またはwp_redirect()を組み合わせてください。
  • admin_menuフックでメニューを削除する場合、削除するページのスラッグを正確に指定してください。スラッグが異なると削除されず、WP_DEBUG=trueでも警告が出ません。
  • ダッシュボードウィジェットの削除は管理者にも影響します。ロール別に制御する場合はwp_dashboard_setup内でcurrent_user_can()で分岐してください。

まとめ

管理画面カスタマイズは「不要メニュー非表示→ダッシュボード整理→管理CSSカスタマイズ→管理バー制御→通知管理」の流れで整備できます。クライアント向けサイトでは管理画面のシンプル化が使いやすさと操作ミス防止に直結します。関連記事:WordPressでカスタムユーザーロールを作成する方法WordPressのfunctions.phpを安全に編集する方法

お気軽にご相談ください

お見積りへ お問い合わせへ