2026年5月20日

2026年5月20日

WordPressのユーザーロールをカスタマイズする方法

はじめに

WordPressの標準ロールでは要件を満たせない場合、独自のロールを作成したり既存ロールに権限を追加・削除することができます。会員サイトや複数人で運営するメディアサイトで特に有用です。

新しいカスタムロールを作成する

// functions.php
// サイト初回ロード時に実行(setup時のみ)
function create_custom_roles() {
    add_role(
        'content_manager',           // ロールID
        'コンテンツ管理者',           // 表示名
        [
            'read'                  => true,
            'edit_posts'            => true,
            'edit_others_posts'     => true,
            'publish_posts'         => true,
            'manage_categories'     => true,
            'upload_files'          => true,
            'moderate_comments'     => true,
        ]
    );
}
add_action('init', 'create_custom_roles');

既存ロールに権限を追加する

// functions.php — 編集者にプラグイン管理権限を追加
add_action('init', function() {
    $editor = get_role('editor');
    if ($editor) {
        $editor->add_cap('install_plugins');
        $editor->add_cap('activate_plugins');
        $editor->add_cap('manage_options');
    }
});

既存ロールから権限を削除する

// 管理者からファイル編集権限を削除(セキュリティ強化)
add_action('init', function() {
    $admin = get_role('administrator');
    if ($admin) {
        $admin->remove_cap('edit_files');
        $admin->remove_cap('edit_plugins');
        $admin->remove_cap('edit_themes');
    }
});

WP-CLIでロールと権限を操作する

# カスタムロールを作成
wp role create content_manager 'コンテンツ管理者'

# ロールに権限を追加
wp cap add content_manager edit_posts
wp cap add content_manager publish_posts
wp cap add content_manager upload_files

# ロールの権限一覧を確認
wp cap list content_manager

# カスタムロールを削除
wp role delete content_manager

ユーザー単位で権限を付与・削除する

# 特定ユーザーに個別権限を追加(ロールとは別)
wp user add-cap username manage_options

# 権限を削除
wp user remove-cap username manage_options

# ユーザーの全権限を確認
wp user list-caps username

カスタム投稿タイプ用の権限設定

// カスタム投稿タイプ作成時に権限を設定
register_post_type('product', [
    'capability_type' => 'product',
    'map_meta_cap'    => true,
    // ...
]);

// 管理者に商品権限を付与
$admin = get_role('administrator');
$admin->add_cap('edit_products');
$admin->add_cap('publish_products');

注意事項

  • add_role() はDBに保存されるため、毎回実行する必要はありません(重複実行しても問題はありません)
  • ロールの変更は wp_user_roles オプションに保存されます
  • プラグインを削除する際はカスタムロールも remove_role() でクリーンアップしてください

まとめ

add_role() で新規ロール作成、get_role()->add_cap() で既存ロールへの権限追加が基本です。WP-CLIなら wp role create + wp cap add で素早く設定できます。

お気軽にご相談ください

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