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

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

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

その際には 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という役割を追加している処理になります。

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

参考

書籍を出版しました!

WordPress デフォルトテーマ Twenty Twenty-Four を使って、シンプルなブログやポートフォリオサイト、そしてコーポレートサイトを作りながら、ブロックテーマやサイトエディターの基本を理解することができます。