2020.03.05

WordPressのユーザー登録後に自動ログインさせて任意ページにリダイレクトさせる方法

こんにちは、webエンジニアのゾノ( @ozonosho )です。

今回のブログではWordPressのユーザー登録後に自動ログインさせて任意ページにリダイレクトさせる方法を紹介したいと思います。

会員サイトであればたいていの場合、WordPressのユーザー登録フォームからユーザーが任意に会員登録できる仕様にすると思います。そして、会員サイトであればたいていの場合、登録後のユーザーにはプロフィールの設定などをおこなってほしいと思います。

しかしながらWordPressの標準仕様はかなりメンドクサイ作りになっていて、ユーザーが登録してからプロフィール設定ページ(=見てほしいページ)にたどりつくまでには下記の4ステップを踏まなければいけません。

  1. ユーザー登録フォームから会員登録
  2. メールアドレス宛に届くパスワード設定リンクからパスワードを登録
  3. ログインフォームからログイン
  4. ログイン後はトップページに飛ばされるので任意のページにいく

今回の記事は、③④の手間を1つにしちゃおうという話です。

さらに以前紹介した記事『WordPressのユーザー登録フォームにパスワード登録欄を追加する方法』では①②の手間を1つにする方法を紹介しているので、2つの方法を組み合わせれば下記の2ステップに減らすことができます。

  1. ユーザー登録フォームからパスワード設定も含めた会員登録←過去の記事で紹介
  2. 会員登録後はログインしてそのまま任意のページに飛ばされる←今回の記事の紹介

実際に僕の運営するサイト『未来地図』では、下図のようにユーザーが登録フォームから登録するとそのままログインしてマイページに飛ぶことができます。

▽登録フォーム

登録フォームから登録すると、そのままログインしてマイページに飛びます。

メチャ便利!

そんなわけで、前置きが長くなりましたがさっそく実装方法を見ていきましょう。

WordPressのユーザー登録後に自動ログインさせて任意ページにリダイレクトさせる方法

実装は簡単で、functions.phpに下記のコードを追加してください。

function user_regist_profile ($user_id) {
  if(!is_user_logged_in()) {
    wp_set_auth_cookie($user_id);
  }
  wp_redirect('ログイン後に飛ばしたいページのURL');
  exit;
}
add_action('user_register', 'user_regist_profile', 10, 3);

基本はたったこれだけです。
新規ユーザー登録直後に処理を加えられるアクションフック「user_register」を利用して、強制ログインとリダイレクトの処理を追加しています。

登録時に管理者やユーザー宛に通知メールを送信したい場合は、下記のようなコードを追加すれば実装できます。

function user_regist_profile ($user_id) {
  $user = get_userdata($user_id);
  //管理者宛に登録通知メールを送る
  $subject = '新規会員登録の通知';
  $message  = '新規ユーザーが作成されました。' . "\r\n\r\n";
  $message .= 'ユーザー名:' . $user->user_login . "\r\n";
  $message .= 'メールアドレス:' . $user->user_email . "\r\n";
  wp_mail(get_option('admin_email'), $subject, $message);
  //ユーザー宛に登録通知メールを送る
  $subject = '新規会員登録のお知らせ';
  $message  = 'このたびはご登録いただき、ありがとうございます。' . "\r\n";
  $message .= '下記のアカウントを作成いたしました。' . "\r\n\r\n";
  $message .= 'ユーザー名:' . $user->user_login . "\r\n";
  $message .= 'メールアドレス:' . $user->user_email . "\r\n";
  wp_mail($user->user_email, $subject, $message);

  if(!is_user_logged_in()) {
    wp_set_auth_cookie($user_id);
  }
  wp_redirect('ログイン後に飛ばしたいページのURL');
  exit;
}
add_action('user_register', 'user_regist_profile', 10, 3);

さらに、以前紹介した記事『WordPressのユーザー登録フォームにパスワード登録欄を追加する方法』と組み合わせれば、ユーザー登録時にそのままパスワードを設定できたり、設定してもらったパスワードをユーザーに通知メールでお知らせすることもできたりするので、ぜひ色々と試してみてください^^

おわりに

以上、今回の記事ではWordPressのユーザー登録後に自動ログインさせて任意ページにリダイレクトさせる方法を紹介させていただきました。

当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。

あなたのサイトに理想の機能を実装!WordPressカスタマイズサービス

本サービスはあなたのWordPressサイトに理想の機能を実装するサービスとなります。 どのような機能・要望でも実現可能です! Wo......

→この記事を読む