ブログ向けWordPressテーマ「SWELL」をリリースしました!

WordPressのユーザー権限グループと権限の名前まとめ

2019 12/11
WordPressのユーザー権限グループと権限の名前まとめ

WordPressでは「投稿を編集できるか」・「プラグインを扱えるか」などの個別の『権限』が用意されていて、『権限グループ』ごとにどの『権限』持つかが決められています。( プラグインで編集可能 )

このページでは、そういった『権限』と『権限グループ』についてまとめていきます。

詳しくはCodex日本語版の「ユーザーの種類と権限」ページが非常に参考になります。

目次

WordPressユーザーの『権限グループ』一覧

デフォルトでは、WordPressのユーザーは以下のいずれかの『権限グループ』に属します。

  • 特権管理者 - ???
  • 管理者 - administrator
  • 編集者 - editor
  • 投稿者 - author
  • 寄稿者 - contributor
  • 購読者 - subscriber

左側が日本語での表記、右側がcurrent_user_can()などに渡す時のスラッグ名です。

「特権管理者」(マルチサイトの管理者?)のスラッグがわからなかったです...。

権限グループごとの『権限』一覧

それぞれの権限グループがどのような『権限』を持つかも、まとめておきます。

下位の『権限グループ』が持っている『権限』は、上位の『権限グループ』も所有しています。

『特権管理者』が持つ特殊な権限

  • manage_network
  • manage_sites
  • manage_network_users
  • manage_network_plugins
  • manage_network_themes
  • manage_network_options

『管理者』が持つ権限

  • activate_plugins
  • edit_theme_options
  • export
  • import
  • list_users
  • manage_options
  • promote_users
  • remove_users
  • switch_themes
  • edit_dashboard

以下、通常サイトの『管理者』およびマルチサイト の『特権管理者』が持つ権限の一覧。
(マルチサイトにおける各サイトごとの『管理者』は以下の権限を持たない)

  • create_users
  • delete_plugins
  • delete_themes
  • delete_users
  • edit_files
  • edit_plugins
  • edit_themes
  • edit_users
  • install_plugins
  • install_themes
  • update_core
  • update_plugins
  • update_themes

『編集者』以上が持つ権限

  • delete_others_pages
  • delete_others_posts
  • delete_pages
  • delete_posts
  • delete_private_pages
  • delete_private_posts
  • delete_published_pages
  • edit_others_pages
  • edit_others_posts
  • edit_pages
  • edit_posts
  • edit_private_pages
  • edit_private_posts
  • edit_published_pages
  • edit_published_posts
  • manage_categories
  • manage_links
  • moderate_comments
  • publish_pages
  • publish_posts
  • read
  • read_private_pages
  • read_private_posts
  • unfiltered_html

『投稿者』以上が持つ権限

  • delete_published_posts
  • edit_published_posts
  • publish_posts
  • upload_files

『寄稿者』以上が持つ権限

  • delete_posts
  • edit_posts

『購読者』以上が持つ権限

  • read

current_user_can( )で特定の『権限グループ』以上かどうかを判定する方法

current_user_can()という関数では、以下のようなことを判定することができます。

  • 『権限』の名前を渡すと、現在のユーザーがその権限を持つかどうか
  • 『権限グループ』の名前を渡すと、現在のユーザーがその権限グループに属しているかどうか

しかし、『投稿者』以上の権限グループに属しているかどうかを見極める場合にcurrent_user_can('author)としてしまうと、『管理者』や『編集者』のユーザーはfalseが返ってきます。

解決方法1:権限グループ名を全部指定する

if ( current_user_can('administrator', 'editor', 'author') ) {

    /* 『投稿者』以上の権限グループのユーザーの場合に実行する処理 */

}

解決方法2:その権限グループから持てる特定の『権限』を指定する

if ( current_user_can('publish_posts') ) {

    /* 『投稿者』以上の権限グループのユーザーの場合に実行する処理 */

}

publish_postsupload_filesなどの権限は『投稿者』以上の権限グループが所有しているので、上記のような記述でOK。

具体的な『権限』例
  • 管理者』以上を判定する
    • update_core / switch_themes / exportなど...
       
  • 編集者』以上を判定する
    • edit_pages / delete_pagesなど
       
  • 投稿者』以上を判定する
    • publish_posts / upload_filesなど
       
  • 寄稿者』以上を判定する
    • edit_posts / delete_posts

『ユーザーレベル』について

『ユーザーレベル』という概念は、WordPressのバージョン3.0より前に利用されていたものだそうです。

バージョン3.0以降は『ユーザーレベル』の使用は非推奨となり、ここまで紹介してきたような個別の『権限』と『権限グループ』によって管理されます。

この記事が気に入ったら
フォローしてね!

目次
目次