---
title: "current_user_can を使ってユーザー権限ごとに条件分岐をする方法"
canonical_url: "https://olein-design.com/blog/current_user_can"
language: "ja"
date_published: "2021-04-19T08:58:37+09:00"
date_modified: "2024-07-08T12:56:15+09:00"
content_type: "post"
author: "久野晃司"
taxonomies:
  category:
    - "WordPress"
---

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

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

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

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

[埋め込みコンテンツ](https://developer.wordpress.org/reference/functions/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' );
```

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

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

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

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

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

## 参考

[埋め込みコンテンツ](https://ja.wordpress.org/support/article/roles-and-capabilities)
