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などで権限や権限グループをカスタマイズしている場合などは、「権限グループ」で判別する方が良いケースもあると思います。(特に独自の権限グループを作成している場合など)
状況に応じて、使い分けてみてください。