権限または権限グループを元に、ログインユーザーが管理者かどうか判別する方法

WordPressのテーマカスタマイズやプラグイン開発を行なっていると、特定の権限を持ったユーザーにだけ、処理を走らせたり、ページの一部を表示させたい、といったケースって出てくると思います。

その時に使える分岐方法をまとめてみました。

予備知識:権限で判別するか?権限グループで判別するか?

WordPressには、「権限」と「権限グループ」の2種類が存在します。

「権限」は、WordPressに関する様々な操作ごとの許可を定義したものです。かなり細かく分かれています。(全部で50種類くらい)

(例)
 ・edit_posts: 投稿を編集できる権限
 ・create_users: ユーザーを追加できる権限
 ・manage_options: 管理画面の「設定」にアクセスできる権限

そして「権限グループ」は、上の「権限」をまとめたものです。初期では以下5つの権限グループが存在し、それぞれに権限を付与する事で、権限グループごとに可能な操作を定義しています。

・管理者(Administrator)
・編集者(Editor)
・投稿者(Author)
・寄稿者(Contributor)
・購読者(Subscriber)
※ マルチサイトで運用されている場合は、さらに「特権管理者(Super Admin)」が追加されます。

WordPressの管理画面から各ユーザーに設定するのは、基本的にこの「権限グループ」単位になります。

コード紹介

さて、この「権限」と「権限グループ」を踏まえた上で、ログイン中ユーザーが管理者かどうか?を判別する方法を2通りご紹介します。

「権限」で判別する方法

管理者かどうか?を「権限」で判別する一例は、こちら。

if ( current_user_can( 'manage_options' ) ) {
    // 管理者(=管理画面の「設定」にアクセスできるユーザー)である
}

「管理者かどうか」というよりは、「管理画面の設定ページにアクセスできるユーザーかどうか」という判別方法です。

管理者以外のユーザーにも「manage_options」権限を設定している場合は、当然そのユーザーも対象となります。

「権限グループ」で判別する方法

「権限」ではなく「権限グループ」、つまり管理者(Administrator)かどうか?で判別する一例は、こちら。

if ( current_user_can( 'administrator' ) ) {
    // 権限グループ「管理者(Administrator)」である
}

権限グループに、「administrator」が設定されているか?という判別方法になります。

使い分けは?

色々書きましたが、1人でブログ運用されているのであれば、「権限」で判別する方法がシンプルに書けて良いと思います。(管理画面の設定をいじれるのは、自分だけだと思うので)

ただ、複数人でブログ運用されていたり、ユーザーがたくさん登録している会員制サイトを運用されていたりして、User Role Editorなどで権限や権限グループをカスタマイズしている場合などは、「権限グループ」で判別する方が良いケースもあると思います。(特に独自の権限グループを作成している場合など)

状況に応じて、使い分けてみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA