WordPressログイン画面のパスワードリセット画面のカスタマイズ方法を徹底解説

みなさんこんにちは!エンジニアの高澤です!
WordPressログイン画面のパスワードリセット画面のカスタマイズ方法を徹底解説していきたいと思います。
当記事を読んでいただければ、パスワードリセット画面を自在にカスタマイズできるようになります。
カスタマイズできるようになれば、WordPressを使って会員登録サイトを開発する際や、そもそものWordPressのログイン処理やユーザー機能などについて理解することができます。
お仕事などで問題なく使える構成で執筆いたしましたので、よろしければぜひ当記事をご活用いただけましたら幸いです。
パスワードリセット画面とは
WordPressのパスワードリセット画面とは、ログイン情報を忘れたユーザーが新しいパスワードを設定できる仕組みです。

会員登録できるサイトではほぼ必ず存在するページなので、馴染みがあるかと思います。
ここからはWordPressの「パスワードをお忘れですか?」の仕様を確認してみましょう。
ログイン画面の「パスワードをお忘れですか?」のリンクからアクセスできますので、クリックしてください。

クリックすると、下図のように「ユーザー名またはメールアドレス」を入力して新しいパスワードを取得できるフォーム画面に切り替わります。

「ユーザー名またはメールアドレス」を入力して送信後、下図のように送信が完了したことと合わせて受信されたメールを確認してくださいという内容が表示されます。
メールはWordPressユーザーとして登録してあるWordPress管理画面左メニュー「設定」→「一般」の「管理者メールアドレス」のメールアドレス宛に送信されます。

メールをご確認いただくと、以下の内容で送られているのがわかります。
メール文中にある添付されたメールアドレスのリンクをクリックしてください。

クリックすると、下図のように事前にWordPress側で自動生成したパスワードが入力された状態で、新しいパスワードを保存して設定できるようになっております。
ご自身で考えたパスワードを入力して設定することも可能です。
新規パスワードが決まったら、「パスワードを保存」ボタンをクリックしてください。

クリックすると、下図のように「パスワードをリセットしました。」という画面に切り替わります。

「ログイン」のリンクテキストをクリックしていただくと、元のログイン画面が表示されます。
ログインする際は、新しく作成したパスワードでログインできるようになっています。

WordPressのパスワードリセットの仕様はこんな感じです。
デフォルトのリセット画面のデザインはシンプルですが、サイトのデザインに合わせてカスタマイズしたり、UI(ユーザインタフェース)を向上させるために改良したりすることが可能です。
また、ここまで解説した手順の各タイミングでWordPressの専用フックが用意されているので、カスタマイズする際はフックを使って実装していきます。
WordPressのフックについてわからない方は、よろしければ以下の記事で詳しく解説しておりますのでご確認ください。
パスワードリセット画面のカスタマイズ方法
それでは早速、パスワードリセット画面のカスタマイズ方法について解説いたします。
画面デザインをカスタマイズ
パスワードリセット画面のデザインをカスタマイズする方法を解説いたします。
説明は後にして、以下のコードをfunctions.phpにコピー&ペーストしてください。
<?php
function custom_lostpassword_styles() {
if (
(isset($_GET['action']) && $_GET['action'] === 'lostpassword') ||
(isset($_GET['checkemail']) && $_GET['checkemail'] === 'confirm') ||
(isset($_GET['action']) && $_GET['action'] === 'rp')
) {
$custom_css = "
body {
background: #fff;
}
.wp-login-logo,
.language-switcher {
display: none;
}
#login form p.submit {
display: flex;
justify-content: center;
}
.login-action-rp #login form p.submit { /* 新規パスワード生成画面のみ調整用CSS */
justify-content: space-around;
}
.wp-core-ui .button-primary {
background: orange;
border-color: orange;
transition: 0.2s;
}
.wp-core-ui .button-primary:hover {
opacity: 0.8;
transition: 0.2s;
}
.login .message, .login .notice, .login .success {
border-left: none;
background: #efefef;
border-radius: 5px;
box-shadow: none;
}
.login form {
border: none;
box-shadow: 0 0 10px #ddd;
border-radius: 5px;
}
.login label {
display: flex;
justify-content: center;
margin-bottom: 14px;
}
";
wp_add_inline_style( 'login', $custom_css ); // WordPressの `login.css` 読み込み後に追加
}
}
add_action( 'login_enqueue_scripts', 'custom_lostpassword_styles' );
ペーストが完了したら、ログイン画面からパスワードリセット画面へアクセスしてください。
すると、下図のようにデザインされていることがわかるかと思います。

ユーザー名またはメールアドレスを入力していただいて「新しいパスワードを取得」ボタンをクリックしていただくと、下図のように送信完了画面もデザインされていることがわかります。

受信されたメールをご確認いただき、添付のURLリンクをクリックすると、下図のように新規パスワード生成画面がデザインされていることがわかります。

これで画面デザインをカスタマイズすることができました。お疲れ様でした!
パスワードリセットメールのカスタマイズ
次は、パスワードリセットメールのカスタマイズ方法について解説いたします。
以下のコードを、functions.phpにコピー&ペーストしてください。
<?php
function custom_password_reset_email($message, $key, $user_login, $user_data) {
// 正しいURL形式でリセットURLを生成
$reset_url = network_site_url('wp-login.php') . '?login=' . rawurlencode($user_login) . '&key=' . urlencode($key) . '&action=rp&wp_lang=ja';
// メール本文をカスタマイズ
$message = "こんにちは、" . esc_html($user_data->display_name) . " さん。\n\n";
$message .= "以下のリンクから新しいパスワードを設定してください。\n\n";
$message .= $reset_url . "\n\nパスワードをリセットする\n\n";
$message .= "これはテキスト実装用のメールです!!!。\n";
return $message;
}
add_filter('retrieve_password_message', 'custom_password_reset_email', 10, 4);
ペーストが完了したら、試しにこれまで通りにログイン画面からパスワードリセット画面へ移動し、ユーザー名またはメールアドレスを入力して送信して見ましょう。
メールが受信されるので、メール文を確認すると、コードに記述した通りにカスタマイズされたメール文が表示されていることと思います。

このようにメール文をカスタマイズできるので、例えばご自身のサイトに必要な情報を追加したり、他の必要なリンクを添付して誘導したりなど、サイトの仕様で必要な機能を追加実装したり、実現したいマーケティング施作を実現することができます。
まとめ
本記事では、WordPressのパスワードリセット画面をカスタマイズする方法について詳しく解説しました。
自作することで、会員サイトの開発やWordPressのユーザー管理機能への理解が深まり、より柔軟なカスタマイズが可能になります。
今回紹介した内容を活用すれば、実際の制作現場でも応用できる構成で実装できますので、ぜひご活用
ください。
お気軽に皆さんのご要望をお聞かせください!
どんなに些細なことでも構いません!よろしければ記事や当サイトへの「こんな記事があったら仕事とかで役に立つな〜」や「こうだったらもっと役に立つのに!」といったようなご要望等をお気軽にお聞かせください!今後のサービス改善にお役立てさせていただきます!
例1)Reactの技術記事を書いてほしい!
例2)WordPressの使い方とかを初心者向けに解説してほしい!...など