WordPressのログイン認証をメールアドレスに変更する方法!ログイン画面のラベルを簡単にカスタマイズ!
WordPressでユーザログインする場合、登録したユーザアカウントのIDとパスワードを使いますよね。
そもそもがWordPressの標準仕様なんですが、
もしかしたらサイト運営者さんによっては本来利用するユーザー名ではなく、
メールアドレスでログインしたいと思われる方もいるかもしれません。
個人でブログを運営する分にはさほど気にならなくても、
SNSや会員サイト、もしくは仲間内で展開するウェブサイトだったらなおさら、
ログイン方法や仕様を工夫しなくてはいけないことがあると思います。
WordPressデフォルトでは「ユーザー名」がデフォルトですが、パラメータを変更することで切替できるみたいです。
今回はよくあるメールアドレスを使ってのログイン方法に切り替える手順を公開します。
まあ、ログイン方式なら一般的に「ユーザー名」か「メールアドレス」くらいで、
他の情報でログインするケースは少ないので、「メールアドレス」に変えたいと思います。
WordPressのログイン方法をメールアドレスに切り替える
設定方法はとても簡単です。
WordPressでおなじみに関数定義ファイル(functions.php)に変更を加えるだけです。
本当に追加するだけで終わってしまいますので、2パターンご用意しました。
ユーザー名とメールアドレスを併用してログイン
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | /** * ログイン認証にメールアドレス追加. */ function email_login( $user, $username, $password ) { // ユーザ情報を'email'を対象に検索 $user = get_user_by('email',$username); // ユーザ情報が存在する場合 if(!empty($user->user_login)) { // ユーザ名を取得しセットする $username = $user->user_login; } // ログイン認証の判定結果を返す return wp_authenticate_username_password( null, $username, $password ); } add_filter('authenticate', 'email_login', 20, 3); |
上記のソースコードは、「ユーザー名」の入力フォームに入力した値を
「メールアドレス」として扱い、そのメールアドレスを持つ該当ユーザをget_user_by関数で検索します。
検索後、ユーザ情報が取得できた場合は、
そのメールアドレスを持つユーザが存在していることとなり、そのユーザの「ユーザ名」を$username変数にセットします。
あとは単純に、ログイン認証を行なっているだけですね。
なので裏では「ユーザ名」と「パスワード」でログインしていることになりますね。
メールアドレスだけでログインする方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | /** * ログイン認証をメールアドレスのみに変更. */ function email_login( $user, $username, $password ) { // ユーザ情報を'email'を対象に検索 $user = get_user_by('email',$username); // ユーザ情報が存在する場合 if(!empty($user->user_login)) { // ユーザ名を取得しセットする $username = $user->user_login; } else { // メールアドレスに該当するユーザが存在しない場合は強制的に空文字 $username = ''; // 認証失敗にする } // ログイン認証の判定結果を返す return wp_authenticate_username_password( null, $username, $password ); } add_filter('authenticate', 'email_login', 20, 3); |
一番上でご紹介したソースコードとほぼ同じですが、違う点はif文の分岐処理で、elseを加えているところです。
もしメールアドレスでユーザ情報を検索し、
ユーザ情報が取得できなければ、強制的に「ユーザー名」を空文字にしてしまい、強制的にログイン認証を失敗させる動きになります。
なので「メールアドレス」ではなく「ユーザー名」を入力し、
ログインを試みようとすると、入力した「ユーザ名」を「メールアドレス」として検索するので、
ユーザ情報が取得できず、ログイン失敗になります。
こうすることで「メールアドレス」以外のログインを禁止させることができます。
ログイン画面のラベルを変更する方法
上記のソースコードを追記することで、簡単にログインの仕様を変更できたと思います。
しかし、このままでは「メールアドレス」でログインしなくてはならないのに、
ログイン画面のラベルが「ユーザー名」のままになり矛盾が発生します。
ということで、ログイン画面のラベルを変更する方法もご紹介したいと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /** * ログイン画面「ユーザー名」のラベル変更. */ function change_loginpage_username_label($label){ // 現在のページを判定(wp-login.phpのみ適用) if (in_array($GLOBALS['pagenow'], array('wp-login.php'))) { // ラベルが「ユーザー名」の場合 if ($label == 'ユーザー名') { // ラベル名を変更 $label = 'ユーザー名または、メールアドレス'; } } return $label; } add_filter( 'gettext', 'changepage_login_username_label' ); |
こちらのメソッドを同様にfunctions.phpに追記することで、
ログイン画面の「ユーザー名」のラベルを変更することができます。
特に説明は必要ないと思いますが、「7行目」の文字列に変更されますよ。
これでログイン画面の仕様を変更することができたと思いますが、
気がかりなのが、ラベル変更の処理をid値ではなく、直接ラベル名を判定して書き換えているので、WordPressの仕様やロケール対応している場合はもう少し工夫しないとユーザー名部分のラベル表記がおかしくなるかもしれません。
お使いのWordPress環境に合わせてうまいこと変更して下さい。
最新記事 by よっき (全て見る)
- 「圧着」と「圧接」の違い!コネクタを使った効率的な配線作業! - 2019年10月26日
- 夏の暑さ対策は大丈夫?冷却性能抜群のおすすめCPUクーラー!メモリに干渉しない最強の商品を紹介! - 2018年5月1日
- 自作PC弐号機のケースを換装!SilverStone製のミニタワーで冷却性とかっこよさを追求! - 2018年3月11日
スポンサードリンク