• 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_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によるプロパティアクセスに修正した。

参考: 関数リファレンス/current_user_can

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/