role回りはwp_get_current_userではなくcurrent_user_canのほうが一般的

wordpressの権限ハンドリングはcurrent_user_canのほうが情報が多い

しかしcurrent_user_canの内部ではwp_get_current_userを利用している

wordpressのマルチサイト環境下で管理画面のメニューやトップバーの表示非表示のオンオフを制御している。ロールに基づいて管理メニューをオンオフしているので、権限のハンドリングについてノウハウを把握しておかないといけない。

当初はwp_get_current_userを利用した権限ハンドリングでやっていくつもりだったのだが、webで検索してみてわかってきたのは、current_user_canという権限ではなく

そのユーザーが出来ること

に基づいたロール判定についての情報のほうが豊富であることに気付いた。

おそらく、current_user_canを利用して行うほうがベストプラクティスなのではないかと予想している。

current_user_canに渡せる引数一覧

引数の種類一覧は以下のページで確認できる。

http://codex.wordpress.org/Roles_and_Capabilities#Capabilities

日本語版のページもあるが英語版のほうを参照したほうがより詳細な引数を得ることができる。

今回はマルチサイト環境下における権限制御を行っており、現状ネットワーク管理者とそれ以外という括りで管理画面のメニューをオンオフしていてその場合は以下のようになる。

if( !current_user_can( 'manage_network' ) )
{
        remove_menu_page('themes.php');
}

上の設定は

ネットワーク管理ができないユーザーに対して「外観」メニューを非表示

にする設定になる。

上のコードをテーマ関数functions.phpもしくはプラグインとして設定すれば管理メニューを制御できる。

Webエンジニアブログにコメント

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

role回りはwp_get_current_userではなくcurrent_user_canのほうが一般的の記事にコメントを投稿