WordPressで利用する権限グループと権限・機能について
この記事は2022/04/01に作成されました。
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_core | WordPressをアップデートする権限を持ちます。 | ||||
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 | 管理画面内、プラグインページへのアクセスが許可されます。 |
権限を個別に付与・剥奪する
一例として、寄稿者には画像をアップロードする機能がありません。
これを「文章だけではなく、画像もアップロードしてほしい」とした場合、
メディアアップロードの権限を付与する事で実装可能です。
こういった機能の付与・剥奪はすべての権限グループ、すべての機能に行えます。(ネットワーク権限含む)
逆に、権限を剥奪する事も可能です。
一度付与した権限はデータベース上に書き込まれてしまうので、明示的に剥奪を行わない限り権限が付与されたままとなります。
(付与するコードを消しただけでは、権限は消えません)
(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_network | WordPressのマルチサイト機能をONにするための権限。 これは管理者がデフォルトで持っています。 |
WordPressの権限システムを理解すると「できる事」の幅が広がるため
更に便利になり、幅広いサイト構築が可能となります。
複数人での運用などを考えている時は是非一考してみましょう。
プログラマー/S.Y