[WordPress] current_user_can を使ってユーザー権限ごとに条件分岐をする方法

投稿日:

カテゴリー:

久しぶりに調べて学びになったのでまとめておこうと思います。

WordPress のテーマやプラグインを開発する際に、ログインしているユーザーの権限(やその内容)次第で分岐させたい時もあるでしょう。

その際には current_user_canを使います。

https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/current_user_can

記述例

<?php
if ( current_user_can( 'administrator` ) ) {
  echo '管理者権限だよ!';
}

$capability の探し方

上のサンプルでは administrator と入っていますが、ここに権限名を入れたり、役割を入れたりすることで分岐をすることができます。

権限名や役割をどう調べたら良いかというと、WordPress コアのwp-admin/includes/schema.phpファイルの中で調べることができます。

719行目くらいにこのような記述があります。

<?php
function populate_roles_160() {
	// Add roles.
	add_role( 'administrator', 'Administrator' );
	add_role( 'editor', 'Editor' );
	add_role( 'author', 'Author' );
	add_role( 'contributor', 'Contributor' );
	add_role( 'subscriber', 'Subscriber' );

ここで権限を設定しています。この第1引数を上記サンプルで設置して分岐しているということですね。

他に役割というのがどういうものがあるのかというと、schema.phpのファイル内で「add_cap(」を検索してみてください。ここで設定しているものが役割になります。例えば、727行目あたりで、

<?php
	$role = get_role( 'administrator' );
	$role->add_cap( 'switch_themes' );

という記述がありますが、ここでは管理者権限 administratorに対してswitch_themesという役割を追加している処理になります。

詳しくは以下の資料を読んでみると、より深く理解することができるかと思います。

参考

https://wpdocs.osdn.jp/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E7%A8%AE%E9%A1%9E%E3%81%A8%E6%A8%A9%E9%99%90
https://elearn.jp/wpman/function/current_user_can.html
https://elearn.jp/wpman/column/c20110414_01.html

Gifu WordPress Meetup の
運営・開催に協力しています。

WordPress Meetup とは、世界各国 100 以上の国々で 700 余りの グループが活動している WordPress コミュニティです。

オレインデザイン代表 久野晃司は、岐阜での WordPress Meetup の運営・開催に協力しています。

CoderDojo岐阜 の
運営・開催に協力しています。

CoderDojo とは 7〜17歳を対象とした非営利のプログラミング道場で、CoderDojo岐阜は岐阜県岐阜市にある みんなの森 ぎふメディアコスモス を拠点として毎月定期開催をしています。

オレインデザインは、CoderDojo岐阜へ寄付を行い、定期的かつ安定的な運営と開催に協力をしています。