2026年5月20日

2026年5月20日

WordPressの管理者以外のダッシュボードを非表示にする方法

はじめに

WordPressのダッシュボードには管理者には便利なウィジェットが多数ありますが、一般ユーザーや投稿者には不要な情報が多く表示されます。ロールに応じてダッシュボードをカスタマイズするか、一般ユーザーをフロントエンドにリダイレクトする方法を解説します。

ダッシュボードウィジェットを非表示

// functions.php — 管理者以外にダッシュボードウィジェットを非表示
add_action('wp_dashboard_setup', function() {
    if (current_user_can('manage_options')) return; // 管理者はスキップ

    // 標準ウィジェットを削除
    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');
    remove_meta_box('dashboard_site_health',     'dashboard', 'normal');

    // WordPressニュースウィジェットを削除
    remove_meta_box('dashboard_php_nag',         'dashboard', 'normal');
});

カスタムウィジェットをダッシュボードに追加

// functions.php — 投稿者向けカスタムウィジェットを追加
add_action('wp_dashboard_setup', function() {
    if (current_user_can('manage_options')) return;

    wp_add_dashboard_widget(
        'custom_welcome_widget',
        'ようこそ!',
        function() {
            echo '<p>新しい記事を書くには<a href="' . admin_url('post-new.php') . '">こちら</a>をクリック。</p>';
        }
    );
});

ログイン後のリダイレクト先を変更

// functions.php — ロール別ログイン後リダイレクト
add_filter('login_redirect', function($redirect_to, $requested_redirect_to, $user) {
    if (!($user instanceof WP_User)) return $redirect_to;

    // 管理者以外はトップページへ
    if (!in_array('administrator', (array) $user->roles)) {
        return home_url();
    }
    // 管理者はダッシュボードへ
    return admin_url();
}, 10, 3);

管理者以外を管理画面から完全にリダイレクト

// functions.php — 一般ユーザーを管理画面からフロントへ
add_action('admin_init', function() {
    if (!is_admin() || wp_doing_ajax()) return;
    if (current_user_can('edit_posts')) return; // 投稿者以上は許可

    wp_redirect(home_url('/my-account/')); // マイページへ
    exit;
});

ダッシュボードのカラムを変更

// functions.php — ダッシュボードのカラム数を変更
add_filter('screen_layout_columns', function($columns, $screen) {
    if ($screen->id === 'dashboard' && !current_user_can('manage_options')) {
        $columns['dashboard'] = 1; // 1カラムに統一
    }
    return $columns;
}, 10, 2);

注意事項

  • wp_doing_ajax() の除外を忘れると管理画面のAJAX処理が壊れます
  • ダッシュボードウィジェットの削除はUIの変更であり、URLに直接アクセスすれば表示できます
  • ログインリダイレクトは login_redirect フィルタで制御します

まとめ

wp_dashboard_setup フックで不要なウィジェットを削除し、login_redirect フィルタでロール別のリダイレクト先を設定することで、ユーザーに最適化されたWordPress体験を提供できます。

お気軽にご相談ください

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