WordPressユーザーIDで自動ログイン

前回の記事では、ユーザーを強制的にログアウトさせる方法をご紹介しました。今回はその逆に、ユーザーIDの指定により自動的にログインさせる方法のご紹介です。

たとえば会員サイトで新規会員登録したときに、生成されたユーザーIDで自動ログインしておけば、ユーザーはそのまま会員用コンテンツを閲覧可能となります。サンプルコードは以下のようになります。

$user_id = wp_insert_user([
  'user_login' => $_POST['user_login'],
  'user_pass'  => $_POST['user_pass'],
  'user_email' => $_POST['user_email'],
]);
wp_set_auth_cookie($user_id, true);

上記のコードにより、WordPressにログインした状態のCookieが発行され、そのブラウザでは会員用コンテンツや管理画面などを閲覧可能となります。

wp_set_auth_cookie() の第3引数では、そのCookieがセキュアかどうかをtrue/falseで指定できますが、通常はこの引数は省略可能です。デフォルトでは is_ssl() の返り値が入るため、SSLに対応したサイトでは自動的に true となります。

独自のログインフォームを作る場合には wp_signon() 関数を使うこともありますが、会員登録フローがやや複雑な場合などは、wp_set_auth_cookie() を適切に使うととても便利です。

この記事を書いた人