
ユーザー権限カスタマイズの基本コード
【権限グループの名称・操作範囲】
| 名称(日本語) | 名称(英語・設定用) | 操作範囲(権限) |
|---|---|---|
| 管理者 | administrator | 全ての機能操作が可能 |
| 編集者 | editor | 全投稿記事の編集・削除・公開が可能 |
| 投稿者 | author | そのユーザーが作成した記事のみ編集・削除・公開が可能 |
| 寄稿者 | contributor | 記事の作成・編集が可能で、公開することはできない |
| 購読者 | subscriber | 記事の閲覧のみ可能 |
この表では上から順にできること少なくなっていき、管理画面の表示メニューも変わります。
【権限や権限グループの追加・削除】
| add_cap() | 権限グループに権限を追加。 |
| remove_cap() | 権限グループから権限を削除。 |
| add_role() | 権限グループを追加。 |
| remove_role() | 権限グループを削除。 |
【権限の一例】
| 記事を見る | read |
| 記事を書く・編集する | edit_posts |
| 記事を公開する | publish_posts |
| プラグインのインストール | install_plugin |
| カテゴリーを編集 | manage_categories |
| ユーザー作成 | create_users |
| コメント管理 | moderate_comments |
上記で紹介したもの以外にもさまざまな権限が設定できます。設定できる権限一覧は以下のページを参照ください。
既存の権限グループに権限を追加
元々存在する権限グループにある権限を追加・削除する際に使用するのが add_cap() と remove_cap() です。
例えば寄稿者の権限グループにメディアファイルのアップロードも許可したい場合、以下のようなコードを記述します。
function custom_user_role() {
$role_contributor = get_role('contributor');
$role_contributor->add_cap('upload_files');
}
add_action('admin_init', 'custom_user_role');get_role('権限グループ') で変更したい権限グループを指定、取得した権限グループに add_cap('権限名') で権限を追加し、アクションフックを利用して登録します。
権限を削除する場合は add_cap を remove_cap にします。
新しく権限グループを追加
新しく権限グループを追加したい場合は以下のようなコードを記述します。
function add_user_role() {
$role_editor = get_role('editor');
$new_cap = $role_editor->capabilities;
add_role('my_user_role', '新しい権限グループ', $new_cap);
}
add_action('admin_init', 'add_user_role');add_role('権限グループ名', '表示名', 機能のリスト(配列));
このコードでは、まず「編集者」の権限グループを取得し、その中に格納されている権限(capabilities)情報を取り出して変数へ格納しています。
他の権限グループの権限を利用するのではなく、一から権限を設定する場合は、機能名を配列で指定します。'機能名' => true, でその権限が追加されます。
function add_user_role() {
$new_cap = [
'edit_posts' => true,
'read' => true,
'delete_posts' => true,
];
add_role('my_user_role', '新しい権限グループ', $new_cap);
}
add_action('admin_init', 'add_user_role');【参照】add_role() – Function | Developer.WordPress.org
登録できれば、ユーザーページの権限グループのリストに表示されます。

権限グループを削除
削除する場合は remove_role('権限グループ') のみでOKです。
function remove_user_role() {
remove_role('subscriber');
}
add_action('admin_init', 'remove_user_role');実務でよくあるカスタマイズ事例
実際のWordPress運営では、標準の「管理者・編集者・投稿者」だけでは不十分なケースが多々あります。以下はよくあるカスタマイズ事例です。
編集権限を制限した「コンテンツ編集者」の作成
社内ライターに記事の作成・編集のみを許可し、プラグインやテーマの操作は制限するケースです。
- 目的:セキュリティを確保しつつ記事作成を効率化
- 設定例:
edit_postsは有効、install_pluginsやedit_theme_optionsは無効
外部ライター向け「投稿者+画像アップロード」
WordPressの標準「投稿者」権限では画像アップロードができません。そのため、外部ライターに記事と画像を同時入稿してもらいたい場合は「upload_files」を追加します。
- 目的:入稿時の手間を削減
- 設定例:
edit_posts+upload_filesを許可
会員制サイトやECサイトでの専用権限
WooCommerceや会員制プラグインを導入すると、独自の権限(例:顧客・ショップマネージャー)が追加されます。
- ショップマネージャー:商品管理や注文処理は可能だが、サイト全体の設定変更は不可
- 顧客:商品購入や会員専用ページの閲覧のみ可能
このように、サイトの性質に応じて適切に権限を調整することで、セキュリティと運営効率の両立が可能となります。