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

説明

wp_signon() は、ユーザー名とパスワードでログイン処理を行う関数です。

基本構文

wp_signon( array $credentials = array(), string|bool $secure_cookie = '' ): WP_User|WP_Error

引数

  • $credentials:user_login、user_password、remember
  • $secure_cookie:SSL専用Cookieにするか

戻り値

ログイン成功時は WP_User、失敗時は WP_Error。

使い方(サンプル)

$user = wp_signon( array(
	'user_login'    => 'taro',
	'user_password' => 'password',
	'remember'      => true,
) );

注意点

  • 出力が始まる前に呼ぶ必要があります。
  • 失敗時は is_wp_error() で確認します。

実務での使いどころ

  • 独自のログインフォームで、ユーザー名とパスワードを確認し、ログインさせるとき。

よくあるミスと対処

  • 戻り値が WP_Error のときを、考えていない。認証に失敗すると、エラーが返る。
  • 出力を始めたあとに呼び、「headers already sent」になり、Cookieが設定されない。
  • $credentials のキーを間違えている(user_login・user_password・remember)。
  • wp_signon() のあとの、同じリクエストでは、is_user_logged_in() が false のまま。必要なら、wp_set_current_user() も呼ぶ。

NG例

$user = wp_signon( array( 'user_login' => $name, 'password' => $pass ) ); // キーが違う

OK例

$user = wp_signon( array(
	'user_login'    => $name,
	'user_password' => $pass,
	'remember'      => true,
), is_ssl() );
if ( is_wp_error( $user ) ) {
	// 認証に失敗
}

使い分け早見表

関数 役割
wp_signon() 認証し、ログインする(Cookieも設定)
wp_authenticate() 認証だけを行う(ログインはしない)
wp_set_auth_cookie() ログインのCookieを設定する(認証は行わない)

関連項目

wp_set_auth_cookie()、wp_authenticate()

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

コメント

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