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()を呼び出す必要があります。





