プラグインを使わずに特定のユーザーに対して管理画面の機能を制限する方法をご紹介します。特定のユーザーに対して管理画面の機能を制限することで、誤操作を防ぎ、セキュリティを向上させることができます。
functions.phpファイルの編集
使用しているテーマのfunctions.phpファイルに以下のコードを追加します。このコードは、特定のユーザーIDを持つユーザーに対して管理画面の機能を制限します。
function restrict_admin_features() {
// 制限を適用するユーザーID
$restricted_user_id = 2;
// 現在のユーザー情報を取得
$current_user = wp_get_current_user();
// 現在のユーザーが制限対象ユーザーかどうかをチェック
if ($current_user->ID == $restricted_user_id) {
// 制限するメニュー項目をリストアップ
global $menu;
global $submenu;
// 管理画面メニューの一部を削除
remove_menu_page('edit.php'); // 投稿
remove_menu_page('upload.php'); // メディア
remove_menu_page('edit.php?post_type=page'); // 固定ページ
remove_menu_page('edit-comments.php'); // コメント
remove_menu_page('themes.php'); // 外観
remove_menu_page('plugins.php'); // プラグイン
remove_menu_page('users.php'); // ユーザー
remove_menu_page('tools.php'); // ツール
remove_menu_page('options-general.php'); // 設定
// サブメニューの一部を削除 (例: 設定メニューの一般設定を削除)
// unset($submenu['options-general.php'][10]); // 一般設定
}
}
// 'admin_menu'アクションフックにフックして、管理画面メニューを制限
add_action('admin_menu', 'restrict_admin_features', 999);
カスタマイズ
上記のコードをベースに、必要に応じて制限する機能を追加することができます。例えば、ユーザーがプラグインを有効化・無効化できないようにするには、以下のコードを追加します。
// ユーザーがプラグインを有効化/無効化できないようにする
function disable_plugin_actions($actions, $plugin_file, $plugin_data, $context) {
$restricted_user_id = 2;
$current_user = wp_get_current_user();
if ($current_user->ID == $restricted_user_id) {
unset($actions['activate']);
unset($actions['deactivate']);
}
return $actions;
}
add_filter('plugin_action_links', 'disable_plugin_actions', 10, 4);
まとめ
以上が、WordPressで特定ユーザーに対して管理画面の機能を制限する方法です。プラグインを使わずにカスタマイズすることで、より柔軟に管理画面の機能を制限することができます。