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

説明

wp_set_current_user() は、現在のユーザーを指定のユーザーに切り替える関数です。

基本構文

wp_set_current_user( int|null $id, string $name = '' ): WP_User

引数

  • $id:ユーザーID
  • $name:ログイン名

戻り値

WP_User オブジェクト。

使い方(サンプル)

wp_set_current_user( 1 );

注意点

  • ログインさせるわけではなく、そのリクエスト中の現在のユーザーを変更するだけです。ログイン状態にするには wp_set_auth_cookie() も必要です。

実務での使いどころ

  • そのリクエストの間だけ、処理を実行するユーザーを切り替えるとき(テストや、バッチ処理)。
  • ログイン処理の一部として、現在のユーザーを設定するとき。

よくあるミスと対処

  • ログインしたと思っている。この関数は、そのリクエストの間だけユーザーを切り替える。ログインの状態は残らない(Cookieを設定しない)。
  • 認証なしに、管理者のIDを設定し、権限を乗っ取る形になる。呼び出す条件を、厳しく制限する。
  • ユーザーを切り替えたまま、元に戻していない。

NG例

wp_set_current_user( 1 ); // 認証なしに、管理者として処理される

OK例

$user = wp_authenticate( $login, $password );
if ( ! is_wp_error( $user ) ) {
	wp_set_current_user( $user->ID );
}

使い分け早見表

関数 役割
wp_set_current_user() そのリクエストの間だけ、現在のユーザーを設定する
wp_set_auth_cookie() ログインのCookieを設定する(以降のリクエストで、ログイン状態になる)
wp_signon() 認証し、ログインする(Cookieも設定)

関連項目

wp_set_auth_cookie()、wp_get_current_user()

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

コメント

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