ハマログ

株式会社イーツー・インフォの社員ブログ

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

roletagWordpress

  yama   2022年9月6日


関連記事

WordPressで管理画面からテーマ編集時にエラー

はじめに WordPressの管理画面からテーマファイル(外観→テーマ編集)を編…

コーポレートサイトリニューアル

こんにちは、かねこです。 つい先週、かれこれ2〜3年使っていたコーポレートサイト…

WordPressのカスタムフィールドでのチェックボックスの使い方

こんにちは、かねこです。 はじめに WordPressで、管理画面で指定した記事…


← 前の投稿

次の投稿 →