こんにちは。デザイナーのSUZUKIです。
現在WordPressを習得中で、日々精進しています。
まだまだ身になっていないので、備忘録として、
今回はWordPressの「ユーザーの種類・権限」と「ユーザーごとに振り分ける方法」を紹介します。
「ユーザーの種類・権限」
WordPressには、「ユーザーの種類・権限」という概念があり、
管理者はユーザーのサイト内での操作権限をコントロールすることができます。
実際の「ユーザーの種類・権限」は下記になります。
下に行くほど権限がなくなり、操作可能な機能が減っていきます。
| ユーザーの種類 | 値 | 権限 |
|---|---|---|
| 特権管理者 | - | マルチサイトのすべての管理が可能 |
| 管理者 | administrator | プラグインの新規追加から設定、テンプレートの変更などシングルサイト内のすべての管理が可能 |
| 編集者 | editor | 他のユーザーの投稿を含むすべての投稿を編集・公開、カテゴリーとタグの編集、コメントの承認が可能 |
| 投稿者 | author | 自身の投稿を作成・編集・公開が可能だが、他のユーザーの投稿、固定ページの管理はできない |
| 寄稿者 | contributor | 自身の投稿を編集、管理は可能だが、公開はできない。 |
| 購読者 | subscriber | プロファイル管理と投稿の閲覧が可能。一番制限されているユーザーで投稿の作成も公開もできない。 |
シングルサイトの場合、「管理者」も「特権管理者」も実質同じ権限になります。
「ユーザーごとに振り分ける」
よく使う振り分け方法は管理者と管理者以外でわけることです。
下記の方法で振り分けると便利です。
functions.phpに下記コードを記述します。
function remove_menus () {
if (!current_user_can('administrator')) { //管理者ではない場合
/ 処理方法を記述;
}
}
add_action('admin_menu', 'remove_menus');投稿者だけを振り分ける場合はfunctions.phpに下記コードを記述します。
function remove_menus () {
if (current_user_can('author')) { //投稿者の場合
/ 処理方法を記述;
}
}
add_action('admin_menu', 'remove_menus');また、「author」の部分を「editor」や「subscriber」など、
ほかのユーザーの値にかえることで、ユーザーの種類(ロール)ごとに振り分けが可能になります。
権限で振り分ける方法
「current_user_can()」は、ユーザーの種類(ロール)だけでなく、権限を指定して判定することもできます。
例えば、管理画面の設定を変更できるユーザーだけを判定したい場合は、次のように「manage_options」を指定します。
function remove_menus () {
if (current_user_can('manage_options')) { //設定を管理できる権限を持つ場合
/ 処理方法を記述;
}
}
add_action('admin_menu', 'remove_menus');
「administrator」のようにロール名で判定する方法でも問題ありませんが、特定の権限を持っているかどうかで判定したい場合は、「manage_options」のような権限名を指定する方法もあります。特に、独自ロールを追加しているサイトや、プラグインで権限が変更されているサイトでは、ロール名ではなく権限で判定した方が柔軟に対応できるケースがあります。
まとめ
記事を書く人と記事を承認する人、WordPressを管理する人など
クライアントによってユーザー数や内容が異なってくるので、
状況に合わせ振り分ける必要があると思います。
特にユーザーの種類の指定は間違えやすいので、注意してください。
今回の振り分け方法で管理画面のカスタマイズも可能で、
管理者以外のユーザーには触れてほしくない項目を非表示にする際に便利です。
次回は管理画面のカスタマイズ方法を紹介したいと思います。
参考リンク
下記サイトは参考にしたサイトになります。
詳しく知りたい方はどうぞ。
https://wpdocs.osdn.jp/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E7%A8%AE%E9%A1%9E%E3%81%A8%E6%A8%A9%E9%99%90
https://webool.net/current-user-can-guide/