【WordPress】特定ユーザーに管理画面の機能を制限する方法

プラグインを使わずに特定のユーザーに対して管理画面の機能を制限する方法をご紹介します。特定のユーザーに対して管理画面の機能を制限することで、誤操作を防ぎ、セキュリティを向上させることができます。

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で特定ユーザーに対して管理画面の機能を制限する方法です。プラグインを使わずにカスタマイズすることで、より柔軟に管理画面の機能を制限することができます。