WordPressの管理画面で、ユーザーのメールアドレスとパスワードを変更した際に送信されるメールをカスタマイズする方法

こんにちは。コワーキングスペース7Fスタッフのユースケです。

今日はWordPressから送信されるメールについてのお話しです。

WordPressの管理画面でユーザーのメールアドレスとパスワードを変更した際に、WordPressから変更したユーザー宛てに自動でメールが送信されますね。他の自動送信メールもそうなのですが、これが非常に味気ない文章になっています。
なので、このメールをカスタマイズする方法についてご紹介します。

さて、まずは例の如くコアのソースコードを辿って、ユーザー情報の更新時に実行される処理を地道に調べます。今回はこれが地味に時間かかりました…
件の関数は「wp-includes/user.php」の「wp_update_user」関数です。(Ver.4.3.1時点)
この中でメール送信に係るフィルターフックが4つ定義されています。それぞれの用途について説明します。

apply_filters ( ‘send_password_change_email’, bool $send, array $user, array $userdata )
Codexはこちら
これは「パスワードが変更された際に、ユーザー宛てにメールを送るか送らないかを制御するフラグ」を設定するフックです。
メールを送りたくない場合は、下記のように functions.php に記載すればOKです。

add_filter( 'send_password_change_email', '__return_false' );
apply_filters ( ‘password_change_email’, array $pass_change_email, array $user, array $userdata )
Codexはこちら
これは「パスワードが変更された際に送信されるメールの内容」をカスタマイズするフックです。
第1引数が連想配列になっていて、各キーごとに送信メールの情報が定義されています。
[to]:送信先アドレス
[subject]:メールタイトル
[message]:メール本文
[header]:メールヘッダー

例えば、メールタイトルを変更したい場合は、下記のように functions.php に記載すればOKです。

function custom_password_change_email( $pass_change_email, $user, $userdata ) {
    $pass_change_email['subject'] = 'パスワード変更のお知らせ';
    return $pass_change_email;
}
add_filter( 'password_change_email', 'custom_password_change_email' );
apply_filters ( ‘send_email_change_email’, bool $send, array $user, array $userdata )
Codexはこちら
これは「メールアドレスが変更された際に、ユーザー宛てにメールを送るか送らないかを制御するフラグ」を設定するフックです。
メールを送りたくない場合は、下記のように functions.php に記載すればOKです。

add_filter( 'send_email_change_email', '__return_false' );
apply_filters ( ‘email_change_email’, array $email_change_email, array $user, array $userdata )
Codexはこちら
これは「パスワードが変更された際に送信されるメールの内容」をカスタマイズするフックです。
第1引数が連想配列になっていて、各キーごとに送信メールの情報が定義されています。
[to]:送信先アドレス
[subject]:メールタイトル
[message]:メール本文
[header]:メールヘッダー

例えば、メールタイトルを変更したい場合は、下記のように functions.php に記載すればOKです。

function custom_email_change_email( $email_change_email, $user, $userdata ) {
    $email_change_email['subject'] = 'メールアドレス変更のお知らせ';
    return $email_change_email;
}
add_filter( 'email_change_email', 'custom_email_change_email' );
いかがでしたか? 今回のパターンに関する情報があまり出回っていなかったのですが、登録ユーザー宛てに不要なメールは送りたくない。デフォルトの内容では意味不明なメールが送られてしまうので、ちゃんとした文章に変更したいなんてケースはよくあると思います。
「登録ユーザー宛てに勝手にメールが送られているんだけど!」なんてクライアントさんから言われてしまったときは、このフックを利用してカスタマイズしてみてください。