user_can() の使い方|説明・引数・注意点

説明

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

コメント

タイトルとURLをコピーしました