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体験を提供できます。