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 で素早く設定できます。