役割

役割はユーザーのための一連の機能を定義します。たとえば、ユーザーがダッシュボードで見ることができるものや行うことができることです。

デフォルトでは、WordPressには6つの役割があります:

  • スーパ管理者
  • 管理者
  • 編集者
  • 著者
  • 貢献者
  • 購読者

さらに役割を追加することができ、デフォルトの役割を削除することもできます。

役割と権限(Roles and Capabilities) - img1

役割の追加

新しい役割を追加し、add_role() を使用してそれに機能を割り当てます。

  1. function wporg_simple_role() {
  2. add_role(
  3. 'simple_role',
  4. 'Simple Role',
  5. array(
  6. 'read' => true,
  7. 'edit_posts' => true,
  8. 'upload_files' => true,
  9. ),
  10. );
  11. }
  12. // Add the simple_role.
  13. add_action( 'init', 'wporg_simple_role' );

add_role() の最初の呼び出しの後、役割とその機能はデータベースに保存されます!

連続した呼び出しは何も行いません:機能リストを変更することを含め、期待している動作ではないかもしれません。

機能リストを一括で変更するには、remove_role() を使用して役割を削除し、新しい機能を持つ add_role() を使用して再度追加します。

機能が期待しているものと異なる場合(つまり、これを条件にする)にのみ行うようにしてください。さもなければ、パフォーマンスが大幅に低下します!

役割の削除

remove_role() を使用して役割を削除します。

  1. function wporg_simple_role_remove() {
  2. remove_role( 'simple_role' );
  3. }
  4. // Remove the simple_role.
  5. add_action( 'init', 'wporg_simple_role_remove' );

remove_role() の最初の呼び出しの後、役割とその機能はデータベースから削除されます!

連続した呼び出しは何も行いません。

デフォルトの役割を削除する場合:

  • 管理者およびスーパ管理者の役割を削除することは推奨しません
  • 将来のWordPressの更新でこれらの役割が再度追加される可能性があるため、プラグイン/テーマのコードを保持してください。
  • update_option('default_role', YOUR_NEW_DEFAULT_ROLE)
    削除するのは subscriber であり、これはWPのデフォルトの役割です。

機能

機能は、役割が何をできるか、できないかを定義します:投稿の編集、投稿の公開など。

カスタム投稿タイプは特定の機能セットを必要とする場合があります。

機能の追加

役割に新しい機能を定義できます。

get_role() を使用して役割オブジェクトを取得し、そのオブジェクトの add_cap() メソッドを使用して新しい機能を追加します。

  1. function wporg_simple_role_caps() {
  2. // Gets the simple_role role object.
  3. $role = get_role( 'simple_role' );
  4. // Add a new capability.
  5. $role->add_cap( 'edit_others_posts', true );
  6. }
  7. // Add simple_role capabilities, priority must be after the initial role definition.
  8. add_action( 'init', 'wporg_simple_role_caps', 11 );

任意の役割にカスタム機能を追加することが可能です。

デフォルトのWordPress管理下では、効果はありませんが、カスタム管理画面やフロントエンドエリアで使用できます。

機能の削除

役割から機能を削除できます。

実装は機能の追加と似ていますが、役割オブジェクトの remove_cap() メソッドを使用する点が異なります。

役割と機能の使用

役割の取得

get_role() を使用して、すべての機能を含む役割オブジェクトを取得します。

  1. get_role( $role );

ユーザーの確認

user_can() を使用して、ユーザーが特定の役割または機能を持っているかどうかを確認します。

  1. user_can( $user, $capability );

テストを実行するオブジェクトを含む未文書の第3引数 $args があります。

例:特定の投稿の機能をテストするために投稿IDを渡します。

現在のユーザーの確認

current_user_can() は、現在のユーザーオブジェクトを $user パラメータとして使用する user_can() のラッパー関数です。

バックエンドとフロントエンドのエリアで特定の権限レベルが必要なシナリオで使用します。

  1. current_user_can( $capability );

ユーザーが適切な機能を持っている場合、テンプレートファイルに編集リンクを追加する実用的な例です:

  1. if ( current_user_can( 'edit_posts' ) ) {
  2. edit_post_link( esc_html__( 'Edit', 'wporg' ), '<p>', '</p>' );
  3. }

マルチサイト

current_user_can_for_blog() 関数は、現在のユーザーが特定のブログで特定の役割または機能を持っているかどうかをテストするために使用されます。

  1. current_user_can_for_blog( $blog_id, $capability );

リファレンス

ユーザー役割と機能 のCodexリファレンス。