MENU

WP-Membersの新規会員登録時に自動ログインさせて任意のページへリダイレクトさせる方法

2019 9/02

会員サイトの作成で非常に便利な「WP-Members」というプラグインに関するTipsです。

WP-Membersを使ってユーザーが新規会員登録を行った時、デフォルトではログインフォームが表示され、そのフォームに改めて情報を入力しないとログインされません。

これ、地味に煩わしいですよね。

 

そこで、新規会員登録されたら自動でログインさせる方法をメモっておこうと思います。

functions.phpに以下のコードを記述してください。

新規会員時に自動ログインさせるコード

function add_wpmem_redirect() {

    if ( is_page( 'registration_form' ) ) {  //新規会員登録フォームを設置しているページのスラッグを指定
        if ( isset( $_POST ) && ! empty($_POST) ) {
            $user_data = "";
            if ( isset($_POST['user_email']) ){
                $user_data = get_user_by('email', $_POST['user_email']);
            }

            if ( $user_data ) {
                $user_id = $user_data->ID;
                wp_set_auth_cookie( $user_id, false, is_ssl() );  //ログインさせる
                wp_redirect( home_url().'/hogehoge' );            //任意のページへリダイレクト
                exit;
            }
        
        }
    }
}
add_action( 'wp_head', 'add_wpmem_redirect' );  //wp_headへフックさせる

ひとまず、こんな感じで自動ログインが実装できます!

 

WP-Membersプラグインでは、新規会員登録後、同じ「新規会員登録ページ」にリダイレクトされ、$_POSTに登録された情報が渡ってきています。

  1. その$_POSTの中から、メールアドレスを取得し、
  2. メールアドレスから、新規登録されたユーザーIDを取得します。
  3. そのユーザーIDを利用して、wp_set_auth_cookie()でログイン状態にすることができ、
  4. 最後は、好きなページへリダイレクトさせています。

という処理の流れになっています。

フック先はwp_headじゃなくてtemplate_redirectの方がいいんじゃないの?と思う方もいらっしゃるかと思いますが、template_redirectへのフックではうまくいかなかったのです...。wpへのフックでもダメでした。

この記事が気に入ったら
フォローしてね!

目次
閉じる
WordPressテーマ SWELLWordPressテーマ SWELL