こんにちわ、WordPress推しのみはら(@masashi_385)です。今回紹介するのは、WordPressでユーザー名でもメールアドレスでもログインできるようにする方法です。ユーザー名ってけっこう忘れるので、メールアドレスでログインできたらすごく親切設計ですよね。ということで、プラグインを使ってやる方法と、functions.phpをごにょごにょしてやる方法の2つを紹介しますので、お好みにあわせて実装してください。
プラグイン「WP Email Login」
このプラグイン、名前がそのまんまですね。どうみても、WordPressにメールアドレスでログインするプラグインですね。使い方も特にハマるようなところも無く、問題なく使えるんじゃないでしょうか?もし、日本語で使いたいという方は、かちびと.netさんで日本語化ファイルを配布していますので、そちらでダウンロードしてください。日本語化ファイルは、解凍してWP Email LoginのフォルダにコピペすればOKです。
ユーザーIDでも登録したメールアドレスでもログイン出来るようにするWordPressプラグイン・WP Email Login(と、日本語ファイル) – かちびと.net
functions.phphで
次は、functions.phpにコードを追加してメールアドレスでログインできるようにする方法です。まずコードはこちらです。
function login_with_email_address($username) {
$user = get_user_by('email',$username);
if(!empty($user->user_login))
$username = $user->user_login;
return $username;
}
add_action('wp_authenticate','login_with_email_address');
get_user_by()っていうみたことないような関数がありますね。これは、ユーザー情報を検索してマッチしたユーザー名を返す関数だそうです。これを使えば、メールアドレスだけでなく、ユーザーIDやユーザースラッグでもログインできるようにすることができます。
ここまでで、メールアドレスでもログインできるようになりましたが、せっかくなので、ログイン画面のテキストも変更して、メールアドレスでログインできる事を表示しましょう。ということで、次のコードをfunctions.phpに追加します。
function change_username_text($text){
if(in_array($GLOBALS['pagenow'], array('wp-login.php'))){
if ($text == 'ユーザー名'){$text = 'ユーザー名 か メールアドレス';}
}
return $text;
}
add_filter( 'gettext', 'change_username_text' );
「ユーザー名 か メールアドレス」のところは、好きなように弄ってください。「メールアドレス」だけにしておくと、ユーザー名ではログインできない風に見えますね。まぁ、見えるだけで、実際にはユーザー名でログインできるんですけどねw