WordPressのログインパスワードを忘れてしまった場合、ログイン画面の「パスワードをお忘れですか?」のリンクから、パスワードリセット用のリンクを受け取ることができます。
ユーザー名もしくはメールアドレスを入力して、[新しいパスワードを取得]をクリックすると、パスワードリセット用のリンクが該当ユーザーのメールアドレス宛に送信されます。
デフォルトの状態では、以下のようなメールが送られてきます。本文内のリンクにアクセスすることで、新しいパスワードを設定できます。
本文にも書かれている通り、この時点ではまだパスワードリセットはされておらず、新しいパスワードを設定しなければ何も起こりません。
[サイト名] パスワードのリセット
どなたかが次のアカウントのパスワードリセットをリクエストしました:
サイト名: サイト名
ユーザー名: username
もしこれが間違いだった場合は、このメールを無視すれば何も起こりません。
パスワードをリセットするには、以下へアクセスしてください。
https://example.com/wp-login.php?action=rp&key=5KgSCCGwFmRyS6ZP9efC&login=username&wp_lang=ja
パスワードリセットは IP アドレス xxx.xxx.xxx.xxx からリクエストされました。
上記のパスワードリセットのリクエスト時に送信されるメールの内容を変更する方法をご紹介したいと思います。
パスワードリセットのリクエスト時に送信されるメールのタイトルと本文を変更する方法
メールタイトルは「retrieve_password_title」、メール本文は「retrieve_password_message」というフックで変更可能です。
適用しているテーマのfunctions.phpに、以下のようなコードを追加すれば送信されるメールの内容が変更されます。
//メールタイトルの変更
function my_retrieve_password_title($title, $user_login, $user_data) {
$title = '[' . get_option('blogname') . '] ' . $user_login . 'のパスワードリセット';
return $title;
}
add_filter('retrieve_password_title', 'my_retrieve_password_title', 10, 3);
//メール本文の変更
function my_retrieve_password_message($message, $key, $user_login, $user_data) {
$message = 'パスワードリセット用のURLはこちら' . "\r\n";
$message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . "\r\n";
return $message;
}
add_filter('retrieve_password_message', 'my_retrieve_password_message', 10, 4);
上記を追加することで、以下のようにタイトルと本文が変更されます。
[サイト名] usernameのパスワードリセット
パスワードリセット用のURLはこちら
https://example.com/wp-login.php?action=rp&key=5KgSCCGwFmRyS6ZP9efC&login=username
あとがき
パスワードリセットのメール内容まで変更することってあまりないですが、クライアントワーク等、きっちりこだわりたい時はカスタマイズしてあげると良いですね。