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

説明

current_user_can() は、現在のユーザーが、指定した権限(ケイパビリティ)を持っているかを判定する関数です。

基本構文

current_user_can( string $capability, mixed ...$args ): bool

引数

  • $capability:権限名(例:edit_posts、manage_options)
  • ...$args:投稿IDなど、権限判定に必要な追加の引数

戻り値

権限があれば true。

使い方(サンプル)

if ( current_user_can( 'manage_options' ) ) {
	// 管理者だけの処理
}

注意点

  • ロール名(administrator など)ではなく、権限名で判定するのが推奨です。
  • 特定の投稿への権限は current_user_can( 'edit_post', $post_id ) の形で確認します。
  • データを更新する処理では、この判定を必ず行います。

実務での使いどころ

  • 管理画面の機能や、ボタンの表示を、権限のあるユーザーにだけ出すとき。
  • フォームの保存処理で、更新の権限があるかを確認するとき。
  • 特定の投稿に対する権限(edit_post など)を確認するとき。

よくあるミスと対処

  • ロール名(administrator など)で判定している。権限(manage_options など)で判定する。
  • 投稿に関する権限で、投稿IDを渡していない。current_user_can( 'edit_post', $post_id ) のように、IDを渡す。
  • init フックより前に呼び、ユーザーが決まっておらず、false になる。

NG例

if ( current_user_can( 'administrator' ) ) {
	// ロール名での判定は、推奨されない
}

OK例

if ( current_user_can( 'manage_options' ) ) {
	// 権限での判定
}
if ( current_user_can( 'edit_post', $post_id ) ) {
	// 特定の投稿を編集できるか
}

使い分け早見表

やりたいこと 使うもの
現在のユーザーの権限を判定 current_user_can()
指定したユーザーの権限を判定 user_can()
ログインしているか判定 is_user_logged_in()

関連項目

user_can()、is_user_logged_in()、wp_get_current_user()

公式リファレンス:current_user_can() | Function | WordPress Developer Resources

コメント

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