WordPressユーザー権限のカスタマイズ方法【コード事例】

ユーザー権限カスタマイズの基本コード

【権限グループの名称・操作範囲】

名称(日本語)名称(英語・設定用)操作範囲(権限)
管理者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() です。

例えば寄稿者の権限グループにメディアファイルのアップロードも許可したい場合、以下のようなコードを記述します。

functions.php
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_capremove_cap にします。

新しく権限グループを追加

新しく権限グループを追加したい場合は以下のようなコードを記述します。

functions.php
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, でその権限が追加されます。

functions.php
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です。

functions.php
function remove_user_role() {
  remove_role('subscriber');
}
add_action('admin_init', 'remove_user_role');

実務でよくあるカスタマイズ事例

実際のWordPress運営では、標準の「管理者・編集者・投稿者」だけでは不十分なケースが多々あります。以下はよくあるカスタマイズ事例です。

編集権限を制限した「コンテンツ編集者」の作成

社内ライターに記事の作成・編集のみを許可し、プラグインやテーマの操作は制限するケースです。

  • 目的:セキュリティを確保しつつ記事作成を効率化
  • 設定例:edit_postsは有効、install_pluginsedit_theme_optionsは無効

外部ライター向け「投稿者+画像アップロード」

WordPressの標準「投稿者」権限では画像アップロードができません。そのため、外部ライターに記事と画像を同時入稿してもらいたい場合は「upload_files」を追加します。

  • 目的:入稿時の手間を削減
  • 設定例:edit_postsupload_filesを許可

会員制サイトやECサイトでの専用権限

WooCommerceや会員制プラグインを導入すると、独自の権限(例:顧客・ショップマネージャー)が追加されます。

  • ショップマネージャー:商品管理や注文処理は可能だが、サイト全体の設定変更は不可
  • 顧客:商品購入や会員専用ページの閲覧のみ可能

このように、サイトの性質に応じて適切に権限を調整することで、セキュリティと運営効率の両立が可能となります。

カテゴリー : WordPress

index