説明
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

コメント