WordPressのユーザー登録後に自動ログインさせて任意ページにリダイレクトさせる方法
こんにちは、webエンジニアのゾノ( @ozonosho )です。
今回のブログではWordPressのユーザー登録後に自動ログインさせて任意ページにリダイレクトさせる方法を紹介したいと思います。
会員サイトであればたいていの場合、WordPressのユーザー登録フォームからユーザーが任意に会員登録できる仕様にすると思います。そして、会員サイトであればたいていの場合、登録後のユーザーにはプロフィールの設定などをおこなってほしいと思います。
しかしながらWordPressの標準仕様はかなりメンドクサイ作りになっていて、ユーザーが登録してからプロフィール設定ページ(=見てほしいページ)にたどりつくまでには下記の4ステップを踏まなければいけません。
- ユーザー登録フォームから会員登録
- メールアドレス宛に届くパスワード設定リンクからパスワードを登録
- ログインフォームからログイン
- ログイン後はトップページに飛ばされるので任意のページにいく
今回の記事は、③④の手間を1つにしちゃおうという話です。
さらに以前紹介した記事『WordPressのユーザー登録フォームにパスワード登録欄を追加する方法』では①②の手間を1つにする方法を紹介しているので、2つの方法を組み合わせれば下記の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のカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。