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_mailContent-Type: text/html ヘッダーも設定してください

まとめ

パスワードリセットメールは retrieve_password_titleretrieve_password_message の2つのフィルタでカスタマイズできます。$user_data オブジェクトからユーザー名や表示名を取得して、パーソナライズされた日本語メールを送信しましょう。

お気軽にご相談ください

お見積りへ お問い合わせへ