WordPressのユーザー登録フォームにパスワード登録欄を追加する方法
こんにちは、webエンジニアのゾノ( @ozonosho )です。
今回のブログではWordPressのユーザー登録フォームにパスワード登録欄を追加する方法を紹介したいと思います。
先に完成形をお見せすると下のような登録フォームに仕上がります。
尚、通常のWordPressのユーザー登録フローは下記のとおりです。
- ユーザー登録フォームから「ユーザー名」「メールアドレス」を入力して登録
- メールアドレス宛にパスワード設定のためのリンクが届く
- リンクからパスワード設定フォームに飛んでパスワードを登録する
こんな具合なので、使うたびに「ユーザー登録フォームでパスワードも設定できたら1回で済んで楽じゃん!」と思ってしまいますw
今回はそれを叶えるための方法です。
WordPressのユーザー登録フォームにパスワード登録欄を追加する方法
先ほど見せた完成イメージのとおり、パスワード登録欄には確認用の項目も作成してみます。
実装は簡単で、functions.phpに下記のコードを追加してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
//①ユーザー登録フォームに項目追加 function add_register_field() { ?> <p class="pass-item"> <label>パスワード</label> <input type="text" name="user_pass" id="user_pass" class="input" size="25" required /> <label>パスワード(確認用)</label> <input type="text" name="user_pass2" id="user_pass2" class="input" size="25" /> </p> <?php } add_action( 'register_form', 'add_register_field', 10, 1 ); //②パスワード項目の入力チェック function add_register_field_validate( $sanitized_user_login, $user_email, $errors ) { if (empty($_POST['user_pass']) || empty($_POST['user_pass2'])) { return $errors->add( 'passempty', '<strong>パスワードが入力されていません</strong>' ); } if ($_POST['user_pass'] != $_POST['user_pass2']) { return $errors->add( 'passdif', '<strong>パスワードが異なります</strong>' ); } } add_action( 'register_post', 'add_register_field_validate', 10, 3 ); //③パスワードをユーザー情報として保存する function user_regist_profile ($user_id) { $user = get_userdata($user_id); $user_pass = $_POST['user_pass']; $user->user_pass = $user_pass; wp_update_user($user); } add_action( 'user_register', 'user_regist_profile', 10, 5 ); |
実装にあたっては①~③の3つの関数を用意しています。
WordPressの仕様として、(登録フォーム自体を自作しない限りは)ユーザー名とメールアドレス以外の情報をアカウント作成時に渡すことはできません。そのため、ユーザーアカウント作成後に処理を加えるためのアクションフック「user_register」を利用してユーザーのパスワードを更新しています。(③の処理です)
ここではパスワードの登録方法をご紹介しましたが、同じやり方で姓名などパスワード以外のユーザー情報を登録することもできます。さらには、ユーザー用のカスタムフィールドを作成して登録フォーム送信時に登録することなんかもできるので、ぜひ色々と試してみてください^^
おわりに
以上、今回の記事ではWordPressのユーザー登録フォームにパスワード登録欄を追加する方法を紹介させていただきました。
当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。