会員サイトの作成で非常に便利な「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
に登録された情報が渡ってきています。
- その
$_POST
の中から、メールアドレスを取得し、 - メールアドレスから、新規登録されたユーザーIDを取得します。
- そのユーザーIDを利用して、
wp_set_auth_cookie()
でログイン状態にすることができ、 - 最後は、好きなページへリダイレクトさせています。
という処理の流れになっています。
フック先はwp_head
じゃなくてtemplate_redirect
の方がいいんじゃないの?と思う方もいらっしゃるかと思いますが、template_redirect
へのフックではうまくいかなかったのです...。wp
へのフックでもダメでした。
コメント