2026年5月20日
2026年5月20日
WordPressのパスワードリセットメールの文面をカスタマイズする方法
はじめに
WordPressのデフォルトのパスワードリセットメールは英語混じりで素っ気ない文面です。サイトのブランドに合わせた日本語の丁寧な文面にカスタマイズすることで、ユーザー体験を向上させることができます。
デフォルトのパスワードリセットメール
WordPressが送信するデフォルトの件名と本文:
- 件名:「[サイト名] パスワードのリセット」
- 本文:英語と日本語が混在した機械的な文面
- リセットURL有効期限:24時間
解決手順
ステップ1:件名をカスタマイズする
// functions.php — パスワードリセットメールの件名を変更
add_filter('retrieve_password_title', function($title, $user_login, $user_data) {
return sprintf('[%s] パスワードのリセット手順', get_bloginfo('name'));
}, 10, 3);
ステップ2:本文をカスタマイズする
// functions.php — パスワードリセットメールの本文を変更
add_filter('retrieve_password_message', function($message, $key, $user_login, $user_data) {
$reset_url = network_site_url(
"wp-login.php?action=rp&key={$key}&login=" . rawurlencode($user_login),
'login'
);
$site_name = get_bloginfo('name');
$message = "{$user_data->display_name} 様\n\n";
$message .= "{$site_name} のパスワードリセットのリクエストを受け付けました。\n\n";
$message .= "以下のURLからパスワードを再設定してください:\n";
$message .= "{$reset_url}\n\n";
$message .= "このリンクは24時間有効です。\n";
$message .= "このメールに心当たりがない場合は無視してください。\n\n";
$message .= "---\n{$site_name}";
return $message;
}, 10, 4);
ステップ3:新規ユーザー通知メールをカスタマイズする
// ユーザー登録時の通知メール(管理者向け)を無効化
add_filter('wp_new_user_notification_email_admin', function($email, $user, $blogname) {
$email['subject'] = sprintf('[%s] 新規ユーザー登録: %s', $blogname, $user->user_login);
$email['message'] = sprintf(
"%s 様が登録しました。\nメール: %s\n\n管理画面: %s",
$user->display_name,
$user->user_email,
admin_url('users.php')
);
return $email;
}, 10, 3);
ステップ4:WP-CLIでテスト
# パスワードリセットメールをテスト送信
wp user reset-password username --skip-email=false
# 実際のメール内容を確認
wp eval "
\$user = get_user_by('login', 'testuser');
\$key = get_password_reset_key(\$user);
echo network_site_url('wp-login.php?action=rp&key=' . \$key . '&login=' . rawurlencode(\$user->user_login));
"
注意事項
retrieve_password_messageフィルタのコールバック引数は4つです。add_filterの第4引数に4を指定し忘れないようにしてください- リセットURLの生成は
network_site_url()を使用してください。マルチサイト環境でも正しいURLが生成されます - カスタムHTMLメールを送信する場合は
wp_mailのContent-Type: text/htmlヘッダーも設定してください
まとめ
パスワードリセットメールは retrieve_password_title と retrieve_password_message の2つのフィルタでカスタマイズできます。$user_data オブジェクトからユーザー名や表示名を取得して、パーソナライズされた日本語メールを送信しましょう。