WordPressで権限グループを追加する(プラグイン無し)
WordPressではユーザーごとに利用できる機能を管理するために権限グループを用います。
デフォルトで用意された権限グループでは、利用したい機能と制御したい機能が合致しない場合などは、権限グループをカスタマイズする方法があります。
User Role Editorというプラグインを使用してもできるのですが、プラグインを使わずに設定してみます。
今回はデフォルトの編集者権限に加え、インポート・エクスポートができる権限グループを新たに追加します。
1. functions.phpにコードを追加する
add_role()を使用して権限グループを追加し、add_cap()でユーザー権限を追加していきます。
// 権限グループ「カスタム編集者」を追加 function add_custom_roll() { global $wp_roles; if( empty( $wp_roles ) ) { $wp_roles = new WP_Roles(); } // 権限グループの追加 $wp_roles->add_role( 'custom_editor', 'カスタム編集者', []); // カスタムユーザー権限を付与 $wp_roles->add_cap( 'custom_editor', 'export' ); $wp_roles->add_cap( 'custom_editor', 'import' ); // デフォルトユーザー権限を付与 $wp_roles->add_cap( 'custom_editor', 'delete_others_pages' ); $wp_roles->add_cap( 'custom_editor', 'delete_others_posts' ); $wp_roles->add_cap( 'custom_editor', 'delete_pages' ); $wp_roles->add_cap( 'custom_editor', 'delete_posts' ); $wp_roles->add_cap( 'custom_editor', 'delete_private_pages' ); $wp_roles->add_cap( 'custom_editor', 'delete_private_posts' ); $wp_roles->add_cap( 'custom_editor', 'delete_published_pages' ); $wp_roles->add_cap( 'custom_editor', 'delete_published_posts' ); $wp_roles->add_cap( 'custom_editor', 'delete Reusable Blocks' ); $wp_roles->add_cap( 'custom_editor', 'edit_others_pages' ); $wp_roles->add_cap( 'custom_editor', 'edit_others_posts' ); $wp_roles->add_cap( 'custom_editor', 'edit_pages' ); $wp_roles->add_cap( 'custom_editor', 'edit_posts' ); $wp_roles->add_cap( 'custom_editor', 'edit_private_pages' ); $wp_roles->add_cap( 'custom_editor', 'edit_private_posts' ); $wp_roles->add_cap( 'custom_editor', 'edit_published_pages' ); $wp_roles->add_cap( 'custom_editor', 'edit_published_posts' ); $wp_roles->add_cap( 'custom_editor', 'create Reusable Blocks' ); $wp_roles->add_cap( 'custom_editor', 'edit Reusable Blocks' ); $wp_roles->add_cap( 'custom_editor', 'manage_categories' ); $wp_roles->add_cap( 'custom_editor', 'manage_links' ); $wp_roles->add_cap( 'custom_editor', 'moderate_comments' ); $wp_roles->add_cap( 'custom_editor', 'publish_pages' ); $wp_roles->add_cap( 'custom_editor', 'publish_posts' ); $wp_roles->add_cap( 'custom_editor', 'read' ); $wp_roles->add_cap( 'custom_editor', 'read_private_pages' ); $wp_roles->add_cap( 'custom_editor', 'read_private_posts' ); $wp_roles->add_cap( 'custom_editor', 'unfiltered_html' ); $wp_roles->add_cap( 'custom_editor', 'upload_files' ); } add_action('init', 'add_custom_roll');
2. ユーザー設定
ユーザー一覧から既存ユーザーを選択するかユーザーの新規追加を行います。
権限グループの選択項目に追加した「カスタム編集者」が選択できるようになっています。
3. 権限グループを削除したい場合
権限グループ自体はデータベースに書き込まれます。
functions.phpから前述のコードを削除しただけでは、追加した権限グループは削除されません、
権限グループを削除したい場合は、remove_role()を使用します。
4. ユーザー権限を追加・変更したい場合
前述のコードでadd_cap()でユーザー権限を変更しても、ユーザー権限は反映されません。
add_role()は同じ権限グループがデータベースにある場合、処理をスキップするためです。
ユーザー権限を追加・変更したい場合は、remove_role()で権限グループを削除してから、add_role()を呼び出す必要があります。