説明
user_can() は、指定したユーザーが、特定の権限を持っているかを判定する関数です。
基本構文
user_can( int|WP_User $user, string $capability, mixed ...$args ): bool
引数
$user:ユーザーIDまたはオブジェクト$capability:権限名...$args:追加の引数
戻り値
権限があれば true。
使い方(サンプル)
if ( user_can( 5, 'edit_posts' ) ) {
// ユーザー5は投稿編集が可能
}
注意点
- 現在のユーザーを判定するなら
current_user_can()を使います。
実務での使いどころ
- 現在のユーザーではなく、投稿者など、指定したユーザーの権限を確認するとき。
- 他のユーザーが、投稿を編集できるかを確認するとき。
よくあるミスと対処
- 現在のユーザーの権限を調べたいのに、これを使っている。現在のユーザーには、
current_user_can()を使う。 - 存在しないユーザーのIDを渡し、結果が
falseになる。 - 投稿に関する権限で、投稿IDを渡していない。
NG例
user_can( $post->post_author, 'edit_post' ); // 投稿IDがない
OK例
if ( user_can( $user_id, 'edit_post', $post_id ) ) {
// 指定したユーザーが、その投稿を編集できる
}
使い分け早見表
| やりたいこと | 使うもの |
|---|---|
| 現在のユーザーの権限を判定 | current_user_can() |
| 指定したユーザーの権限を判定 | user_can() |
| ロールの権限を取得 | get_role() |
関連項目
current_user_can()、get_userdata()
公式リファレンス:user_can() | Function | WordPress Developer Resources

コメント