user_can()


WordPress関数user_can()は、特定のユーザーが指定された権限を持っているかを確認するために使用されます。

構文

user_can( WP_User|int $user, string $capability, ...$args );

引数の説明

  • $user (WP_User|int) — チェック対象のユーザーのIDまたはWP_Userオブジェクト。
  • $capability (string) — ユーザーが持つべき権限のスラッグ。
  • $args (mixed) — 必要に応じて追加の引数。

例 1: 投稿を編集できるか確認

次のコードは、ユーザーが投稿を編集する権限を持っているかを確認します。

<?php
if ( user_can( get_current_user_id(), 'edit_post', get_the_ID() ) ) {
    echo 'この投稿を編集できます。';
} else {
    echo 'この投稿を編集する権限がありません。';
}
?>

例 2: 管理者権限の確認

指定されたユーザーが管理者かどうかを確認します。

<?php
if ( user_can( get_current_user_id(), 'administrator' ) ) {
    echo 'あなたは管理者です。';
} else {
    echo '管理者権限はありません。';
}
?>

例 3: カスタム権限のチェック

カスタム権限を使用してユーザーのアクセス権を確認します。

<?php
if ( user_can( get_current_user_id(), 'manage_options' ) ) {
    echo '管理オプションにアクセス可能です。';
}
?>

例 4: 特定のユーザー権限の検証

特定のユーザー(IDを指定)が権限を持つか確認します。

<?php
if ( user_can( 2, 'edit_posts' ) ) {
    echo 'このユーザーは投稿を編集できます。';
} else {
    echo 'このユーザーには編集権限がありません。';
}
?>

例 5: 複数条件の確認

複数の条件に基づいて処理を分岐させる方法。

<?php
if ( user_can( get_current_user_id(), 'edit_posts' ) && user_can( get_current_user_id(), 'publish_posts' ) ) {
    echo '投稿の編集および公開が可能です。';
} else {
    echo '十分な権限がありません。';
}
?>

注意事項

  • この関数は権限の確認に特化しており、ユーザーが持つ権限を正確に設定している場合に有効です。
  • 権限のスラッグが正確であることを確認してください。WordPressの既定スラッグやカスタム権限を使用できます。
  • 不正な入力を避けるために、ユーザーIDの取得時にはget_current_user_id()get_user_by()関数を利用してください。

関連機能: