2026年8月15日
2026年8月15日
WordPressで管理者のみにダッシュボードを見せる設定
はじめに
この記事では、WordPressサイトにおいて管理者以外のユーザーがダッシュボードを閲覧できないようにする方法について説明します。セキュリティ面での重要性や、管理性を向上させる点から、設定は非常に有用です。
管理者権限を持つユーザーのみがアクセスできるようにすることで、他のユーザーが意図せず重要な情報に手を出してしまったり、サイトの動作を妨げてしまうことを防ぐことができます。また、セキュリティリスクを低減させることも可能となります。
症状・背景
このテーマが必要になる主な場面:
- サイト管理者以外がダッシュボードにアクセスしてはならない場合
- 他のユーザーが管理画面の設定を誤って変更する可能性がある場合
- ユーザーが不適切な操作を行うリスクが高い場合
- サイトのセキュリティ強化が必要な場合
手順・設定方法
ステップ1: フィルター関数を作成する
# WordPressのカスタムフックを使用して、ユーザーがダッシュボードアクセスを許可すべきかどうか判断します。
add_filter( 'user_has_cap', function ( $allcaps, $caps, $args ) {
if ( is_admin() && !current_user_can('administrator') ) {
foreach ($caps as $cap) {
if (strpos($cap, 'read') !== false) {
return array();
}
}
}
return $allcaps;
}, PHP_INT_MAX, 3 );
ステップ2: フィルター関数をアクティブ化する
# 上記で作成したフィルター関数をfunctions.phpに追加します。
// functions.php またはカスタムプラグインファイル内に以下を追加:
add_filter( 'user_has_cap', 'custom_dashboard_access_control', PHP_INT_MAX, 3 );
ステップ3: カスタムプラグインを作成する
# ファイル名はdashboard-access-control.phpとし、wp-content/pluginsディレクトリに置きます。
<?php
/**
* Plugin Name: Dashboard Access Control for Admin Only
*/
function custom_dashboard_access_control( $allcaps, $caps, $args ) {
if ( is_admin() && !current_user_can('administrator') ) {
foreach ($caps as $cap) {
if (strpos($cap, 'read') !== false) {
return array();
}
}
}
return $allcaps;
}
add_filter( 'user_has_cap', 'custom_dashboard_access_control', PHP_INT_MAX, 3 );
注意事項
- カスタムコードを追加する前に必ずバックアップを取りましょう。
- この設定は管理者以外のユーザーがダッシュボードにアクセスできないようにしますが、wp-adminディレクトリ自体への直接的なアクセスを防ぐことはありません。それが必要な場合は他の方法も検討してください。
- ユーザーロールやカスタムロールによっては意図しない挙動をする可能性がありますので注意しましょう。
- セキュリティ上の脆弱性を引き起こす可能性があるため、必ず信頼できるソースからコードを使用するか、専門家に相談してください。
まとめ
1. セキュリティの向上: 管理者以外のユーザーがダッシュボードを見ることができないようにすることで、サイト全体のセキュリティを強化します。
2. 管理性の向上: ユーザーが誤って設定やデータを変更してしまうリスクを低減させます。
3. カスタムコードの追加: カスタマイズが必要な場合、functions.phpまたはカスタムプラグインを使用して実装します。
4. バックアップの重要性: 重要な変更を行う前に必ずサイトやデータのバックアップを取りましょう。
5. 専門家のアドバイス: 多くの場合、コードを追加する際には専門家の助けが必要です。
関連記事: