クライアントからの要望でWordPressを複数のユーザーで運用する場合にユーザー毎に権限を分けたり、
元々ある権限グループ以外に専用の権限グループを追加して細かく設定したい場合があると思います。
これらを解決できる「User Role Editor」プラグインと、追加で処理を書くことで実装可能な特定のカスタム投稿の編集権限をユーザーに与える方法について紹介します。
目次
User Role Editorのインストール
WordPressの公式サイトからソースコードを取得しフォルダをアップロードするか、プラグインの新規追加からインストールします。
WordPress公式はこちら
インストールができたら、有効化します。
権限グループの追加
管理画面の「ユーザー」→「User Role Editor」から設定を行います。
こちらで先ずは権限グループを追加していきます。
選択すると、以下の画面のようになります。
項目 | 説明 |
---|---|
権限グループ名 | システム側で認識されるIDです。 |
表示する権限名 | 管理画面で表示される名前です。 |
コピー元 | 既存のグループでベースとして参照したい場合に、コピー元を選択します。 |
権限設定
先ほど追加した権限グループに必要な権限を選択していきます。
特定のカスタム投稿
特定のカスタム投稿の権限設定すると、デフォルトの権限が同じため他のカスタム投稿の権限と連動してしまいます。
これを解消するにはカスタム投稿を追加した際の記述を変更してオリジナルの権限を作成する必要があります。
1 2 3 4 5 6 7 8 | // カスタム投稿タイプ blog の場合 register_post_type( 'blog', array( ... 'capability_type' => array( 'blog', 'blogs' ), 'map_meta_cap' => true ) ); |
変更箇所は「capability_type」を連想配列にして、単数形(カスタム投稿タイプ名)と複数形(カスタム投稿タイプ名 + s)の2つを指定すること。もう一つは map_meta_cap を true にすることです。
すると下記の権限が追加されるので、blogカスタム投稿だけの権限を扱えるようになります。
項目 | 説明 |
---|---|
delete_blogs | 記事の削除 |
delete_others_blogs | 他のユーザーの記事の編集 |
delete_private_blogs | 他のユーザーの非公開記事の削除 |
delete_published_blogs | 公開した記事の削除 |
edit_blogs | 記事の投稿と編集 |
edit_others_blogs | 他のユーザーの記事の編集 |
edit_private_blogs | 他のユーザーの非公開記事の編集 |
edit_published_blogs | 公開した記事の削除 |
publish_blogs | 記事の公開 |
read_private_blogs | 他のユーザーの非公開記事の閲覧 |
特定のカスタムタクソノミー
カスタムタクソノミーも同様にオリジナルの権限を作成する必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 | // カスタムタクソノミー tax_blog の場合 register_taxonomy('tax_blog',array('blog'), array( ... 'capabilities' => array( 'manage_terms' => 'manage_blogs_terms', 'edit_terms' => 'edit_blogs_terms', 'delete_terms' => 'delete_blogs_terms', 'assign_terms' => 'assign_blogs_terms', ) )); |
変更箇所は「capabilities」を連想配列にして、キーにデフォルトの権限名、値にオリジナルの権限名を指定することです。
設定できる権限は下記の4つに分かれています。
項目 | 説明 |
---|---|
manage_terms | 管理画面のメニューに表示 |
edit_terms | タームの編集 |
delete_terms | タームの削除 |
assign_terms | タームの割り当て |
権限の紐づけ
権限グループを追加した管理画面での操作となります。
付与したい権限にチェックを入れて更新すると、選択している権限グループに紐づけすることが出来ます。
ユーザーごとの権限グループの設定
最後に追加した権限グループをユーザ一覧、またはユーザー編集から割り当てます。
特定の権限だけを与えられたユーザーでログインした場合、下記のようなに割り当てた投稿のみ編集できるようになります。
まとめ
特定のカスタム投稿の編集権限を与える方法を重点にまとめました。
カスタム投稿のオリジナルの権限作成に気を付けるとスムーズに設定できると思います。
また「User Role Editor」を導入しないで、オリジナルの権限を作成してしまうと管理者でもそのカスタム投稿の権限がなくなってします。
その場合は「User Role Editor」を有効化すると自動で管理者権限に追加されます。
もしくは「function.php」に「admin_init」アクションフックを使って追加しても大丈夫です。
他にも既存の編集者・投稿者・寄稿者・購読者の権限グループに設定された権限も変更できます。
既存の権限グループの役割については、下記のサイトが分かりやすく書かれていたので読んでみて下さい。