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

コメント