ユーザーの種類と権限 | WordPress
- https://wordpress.org/support/article/roles-and-capabilities/
- 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#.E6.A8.A9.E9.99.90.E3.82.B0.E3.83.AB.E3.83.BC.E3.83.97.E3.81.AE.E6.A6.82.E8.A6.81
Role
WordPressはRoleを使ってユーザーを制御している。 単一サイトでのデフォルトロールは以下の5つ。
- Administrator(管理者)
- Editor(編集者)
- Author(投稿者)
- Contributor(寄稿者)
- Subscriber(購読者)
これに加えて、マルチサイト構成の場合のみ、ネットワーク全体を管理する「Super Admin」ロールが存在する。Super Adminは単一サイト構成では使用しない。
Capabilities
各ロールには権限(Capabilities)と呼ばれる、実行可能な処理の集合が定義されている。
Capabilitiesについては以下を参照。 https://wordpress.org/support/article/roles-and-capabilities/#capability-vs-role-table
ユーザーのロールを取得
wp_get_current_user()はWP_Userオブジェクトを返す(配列ではない)ため、プロパティとしてアクセスする。
$current_user = wp_get_current_user();
echo implode( ', ', $current_user->roles );
※ 元のコードは$current_user['roles']のように配列添字でアクセスしていたが、wp_get_current_user()が返すWP_Userはオブジェクトであり、通常の配列アクセスはできないため、->rolesによるプロパティアクセスに修正した。
wp-includes/pluggable.phpで定義されている関数の注意事項
wp_get_current_user()はpluggable.phpで定義されている。
プラグイン内で同名関数が定義されていない場合のみ、pluggable.php側の定義が使用される。
if ( ! function_exists( 'wp_get_current_user' ) ) :
// 定義
endif;
wp-includes/pluggable.phpは、有効なプラグインが読み込まれた後に読み込まれる。
そのため、この中で定義されている関数は、プラグインの読み込み処理そのものの中では使用できない。
当然、プラグインの中でも、wp-includes/pluggable.php読み込み後に発火するフック(plugins_loaded以降など)の中では使用可能。
メモ
https://developer.wordpress.org/reference/hooks/posts_results/