WordPressで現在のユーザーが持っている権限で条件分岐する時に使った「current_user_can」

私が作ったプラグインに新機能をつけたいので、勉強になる他の作者さんのプラグインのコードを眺めながら勉強しています。それで、「current_user_can」という関数があることを知りました。確実に忘れるので、早速メモメモ!

現在のユーザーの権限を確認する「current_user_can」

Codexの解説によりますと・・・

Whether the current user has a certain capability. See: Roles and Capabilities.

英文をなんとなく意訳すると・・・

現在のユーザーが特定の権限や役割を持っているかどうか確認する。権限と役割についてはページがあるから見てね

関数の英単語をそれぞれ見ていくと、どんなことができるか覚えられそうです。

  • current(現在の)
  • user(ユーザーの)
  • can(できること)

みたいな。

サンプルコード

早速どう使えばいいのか、Codexに載っているサンプルコードを確認しました。

<?php current_user_can( $capability, $args ); ?>

設定できるパラメーター

$capability

権限と役割のページを参考にして値を入れる。

例えば「manage_options」は、WordPressの管理画面中にあるメニューの

  • 設定 – 一般
  • 設定 – 投稿設定
  • 設定 – 表示設定
  • 設定 – ディスカッション
  • 設定 – パーマリンク設定

以上のページにアクセスできる権限があります。

「manage_options」がアクセスできる権限

$args(オプション)

投稿IDを指定できる。特定の投稿IDの「edit_post」や「delete_page」など、権限や役割があるかどうか、判別するのに使える。

使い方サンプル

「moderate_comments」の権限を持っているかどうかで条件分岐

if ( current_user_can('moderate_comments') ) {
 echo '「moderate comments」の権限もってますよ';
} 

特定の投稿ID「123」の「edit_post」の権限を持っているかどうかで条件分岐

if ( current_user_can('edit_post', 123) ) {
 echo 'このユーザーは投稿ID「123」の投稿の編集が可能ですよ'.
}

「current_user_can」をこう使いました

というわけで、私は「current_user_can」を「特定の権限を持っている場合、DB操作や管理画面へのアクセスを許可する条件分岐」などに利用しました。

何かのご参考となりましたら幸いです。

著者:bouya Imamura