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もしくはプラグインとして設定すれば管理メニューを制御できる。