コムセント 技術情報

  1. TOP
  2. コムセント 技術情報
  3. WordPressで利用する権限グループと権限・機能について

WordPressで利用する権限グループと権限・機能について

WordPressに登録されるすべてのユーザーは、管理者/編集者/投稿者/寄稿者/購読者のいずれかの権限グループに属します。
この機能によりユーザーごとに機能を許可/制限することができ、
例としては「記事の寄稿のみ行えるユーザー」や「その寄稿された記事を確認・編集するユーザー」、
「記事の投稿は出来ないが、登録者限定の記事を閲覧できるユーザー」といった区分を作成することができます。
一人でWordPressを運営する場合には気にする必要はない部分ですが、例えば複数人でWordPressサイトを運営する、
WordPressのユーザー機能を利用して訪問者にユーザー登録をさせたいといった時には権限を分ける必要があります。

WordPressにおける権限は機能ごとに細かく分類されており、これら一つ一つを各権限グループに付与する形で実装されています。
(例:「購読者」には「閲覧機能」だけを、「寄稿者」には「閲覧機能」「投稿を作成する機能」「投稿を削除する機能」の3つを付与する…という形)
管理画面では予め用意されている権限グループを各ユーザーに振り分けることしかできませんが、
function.phpへの記載、プラグインの使用などにより特定の機能だけ有効化・無効化することが可能となります。

権限名と機能について

※以下、管理者はすべて操作可能。

権限名編集投稿寄稿購読説明
read記事を読むことができます。(サイト全体をログインしない
と読めないページとして、会員登録した人だけが読める…
という形にする時などに使います)
delete_posts投稿を削除する機能を持ちます。
edit_posts投稿を作る・編集する機能を持ちます。
delete_published_posts公開された投稿を削除する権限を持ちます。
publish_posts投稿を公開する機能を持ちます。
upload_filesファイルをアップロードする権限を持ちます。(メディアページへの
アクセス、メディアアップローダーの表示も含む)
edit_published_posts自分が投稿した投稿を編集する権限を持ちます。
unfiltered_html投稿にhtmlタグやjavascriptコードを使用する琴ができます。
read_private_pagesパスワード保護状態の投稿を見る権限を持ちます。
edit_private_pagesパスワード保護状態の投稿を投稿する権限を持ちます。
delete_private_pagesパスワード保護状態の投稿を削除する権限を持ちます。
read_private_postsパスワード保護状態の投稿を見る権限を持ちます。
edit_private_postsパスワード保護状態の投稿を編集する権限を持ちます。
delete_private_postsパスワード保護状態の投稿を削除する権限を持ちます。
delete_others_posts他人の投稿を削除する権限を持ちます。
delete_published_pages公開済みの固定ページを削除する権限を持ちます。
delete_others_pages他人の固定ページを削除する権限を持ちます。
delete_pages固定ページを削除する権限を持ちます。
publish_pages固定ページを公開する権限を持ちます。
edit_published_pages(内部的に存在するデータですが、この権限がなにかを
意味することはありません。)
edit_others_pages他人が作成した固定ページを編集する権限を持ちます。
edit_pages固定ページ機能を取り扱う権限を持ちます。
edit_others_posts他人が作成した投稿を編集する権限を持ちます。
manage_links管理画面内、リンクへの権限を持ちます。
manage_categories管理画面内、投稿>カテゴリ、及び
リンク>カテゴリへの権限を持ちます。
moderate_commentsコメントを承認する権限を持ちます。(edit_posts権限も
同時に持っていないと、この機能は利用できません)
delete_siteサイトを削除する権限を持ちます。
customize管理画面内、外観>カスタマイズを操作する権限を持ちます。
edit_dashboardダッシュボード(管理画面のトップページ)における
ウィジェットの位置の編集ができます。
update_themesテーマファイルをアップデートする権限を持ちます。
update_pluginsプラグインをアップデートする権限を持ちます。
update_coreWordPressをアップデートする権限を持ちます。
switch_themes管理画面内、外観、および外観内の「テーマ」へ
アクセスするための権限を持ちます。
remove_usersユーザーを削除する権限を持ちます。
promote_users管理画面のユーザーリストにおけるユーザーの役割変更機能を
操作する権限を持ちます。
manage_options管理画面の「設定」を操作する権限を持ちます。
list_users管理画面のユーザー一覧へアクセスする権限を持ちます。
install_themes管理画面のテーマ、新規追加の権限を持ちます。
install_plugins管理画面のプラグイン、新規追加の権限を持ちます。
import管理画面のツール内、「インポート」「エクスポート」の
権限を持ちます。
export(不明)
edit_users管理画面内、「ユーザー」ページへのアクセス権限を持ちます。
edit_themes管理画面の外観内、「テーマエディタ」へのアクセス権限を持ちます。
edit_theme_options管理画面の外観内、「ウィジェット」「メニュー」「ヘッダー」「カスタマイズ」へのアクセス権限を持ちます。
edit_pluginsプラグインエディターへのアクセス権限を持ちます。
edit_files(内部的に存在するデータですが、この権限がなにかを意味することはありません。)
delete_usersユーザーデータの削除権限を持ちます。
delete_themesテーマファイルの削除権限を持ちます。
delete_pluginsプラグインの削除権限を持ちます。
create_users新たなユーザーを作成する権限を持ちます。
activate_plugins管理画面内、プラグインページへのアクセスが許可されます。
参照元:公式リファレンス https://wordpress.org/support/article/roles-and-capabilities/

権限を個別に付与・剥奪する

一例として、寄稿者には画像をアップロードする機能がありません。
これを「文章だけではなく、画像もアップロードしてほしい」とした場合、
メディアアップロードの権限を付与する事で実装可能です。
こういった機能の付与・剥奪はすべての権限グループ、すべての機能に行えます。(ネットワーク権限含む)

逆に、権限を剥奪する事も可能です。
一度付与した権限はデータベース上に書き込まれてしまうので、明示的に剥奪を行わない限り権限が付与されたままとなります。
(付与するコードを消しただけでは、権限は消えません)

(function.php、もしくは自作したプラグインに記述)

function add_upload_files() {
  $contributor = get_role('contributor'); //寄稿者権限を取得
  $contributor->add_cap('upload_files'); //寄稿者権限にファイルアップロード機能を追加
}
  add_action('admin_init', 'add_upload_files');

function remove_upload_files() {
  $contributor = get_role('contributor'); //寄稿者権限を取得
  $contributor->remove_cap('upload_files'); //寄稿者権限からファイルアップロード機能を剥奪
}
  add_action('admin_init', 'add_upload_files');

また、「新しい権限グループを作成する」こともできます。

add_role( '権限グループ名','サイト内表示される権限名',付与する権限の配列);

既存データに付与するべきか、新しくグループを作ったほうが良いかは
やりたい事によって変わってくると思いますので、好きな方を選びましょう。

マルチサイトモードとネットワーク管理者について

WordPressには、「ひとつの管理画面で複数のWordPressサイト」を管理する機能があります。
この「複数のWordPressを操作する管理者」として、通常の管理者よりも更に上の「ネットワーク管理者」(Super admin)という権限が存在します。
このネットワーク管理者も各種権限が細かく分類されており、各権限を付与する形で実装されています。
デフォルトの状態ではすべての権限がネットワーク管理者に付与されています。そのため通常であれば特に考える必要のない部分ですが、例えば一部の権限を取り外した管理者グループを作成したい場合などには一部だけ付与、一部だけ剥奪といった利用が可能です。

権限名説明
create_sites新たにサイトを作成できる権限を持ちます。
delete_sitesサイトを削除する権限を持ちます。
manage_networkマルチサイト用管理画面にアクセス出来るようになります。
(アクセス出来るようになるだけです。他の権限と合わせて利用します)
manage_sitesサイトを編集(各種ページへのアクセス、サイト設定、非表示化、削除など)ができます。
manage_network_users「ネットワーク管理者によるユーザー編集画面」にアクセスできます。
ここで追加したユーザーはすべてのサイトに登録されます。
manage_network_plugins「ネットワーク管理者によるプラグイン編集画面」にアクセスできます。
ここでプラグインを登録するとすべてのサイトにインストールすること等できます
manage_network_themes「ネットワーク管理者によるテーマ編集画面」にアクセスできます。
ここでテーマを登録・削除する事で各サイトで利用できるテーマを
制御することができます。
manage_network_optionsネットワークにおける設定画面を制御できるようになります。
upload_plugins「ネットワーク管理者によるプラグイン編集画面」にプラグインをアップロードすることができます。
upload_themes「ネットワーク管理者によるテーマ編集画面」にテーマをアップロードすることができます。
upgrade_network各WordPressのコアをアップグレードできます。
setup_networkWordPressのマルチサイト機能をONにするための権限。
これは管理者がデフォルトで持っています。

WordPressの権限システムを理解すると「できる事」の幅が広がるため
更に便利になり、幅広いサイト構築が可能となります。
複数人での運用などを考えている時は是非一考してみましょう。

プログラマー/S.Y

このメンバーの記事一覧へ

おすすめ記事