【WordPress 4.3.0~】ユーザー情報変更時に送るメールをカスタムする方法

【WordPress 4.3.0~】ユーザー情報変更時に送るメールをカスタムする方法

みなさんこんにちは
まだ夏のような天気の日も多いですがいかがお過ごしでしょうか。
秋を挟まずに冬が来たらどうしましょう。

さて、今回はWordPressが送るメールをカスタムする方法についてご紹介します。

該当するタイミングは以下の2点です。

  1. 各ユーザーのパスワードを変更した時
  2. 各ユーザーのメールアドレスを変更した時

実装方法

どちらのタイミングでもfunction.phpに書き込みます。
以下コード例です。

/*
* メールアドレス変更の通知メールをカスタム
*/
function custom_email_change_email($email_change_email, $user, $userdata)
{
    // 件名の編集
    $email_change_email["subject"] = "メールアドレス変更が変更されました";
    // 本文の編集 ###xxxxx###は各値に置換される
    $email_change_email["message"] =
        "こんにちは ###USERNAME### さん\n" .
        "\n" .
        "あなたのメールアドレスが ###SITENAME### で変更されたことをお知らせします。\n" .
        "\n" .
        "もしメールアドレスを変更した覚えがない場合、次のサイト管理者に連絡してください。\n" .
        "###ADMIN_EMAIL###\n" .
        "\n" .
        "このメールは ###EMAIL### に送信されました。\n" .
        "\n" .
        "\n" .
        "###SITENAME###\n" .
        "###SITEURL###";

    // 宛先の設定 デフォルトは変更されたユーザーです。
    $email_change_email["to"] = jibun@sample.co.jp;
    // 差出人やCc、Bccなども設定できる
    $header[] = "From: バシャログ <from@sample.co.jp>";
    $header[] = "Cc: cc@sample.co.jp";
    $header[] = "Bcc: bcc@sample.co.jp";
    $header[] = "Bcc: bcc2@sample.co.jp"// 複数設定も可
    $email_change_email["headers"] = $header;

    // カスタムしたものをreturnするとメールに反映される
    return $email_change_email;
}

// メールアドレスが変更された時に呼び出し
add_filter('email_change_email', 'custom_email_change_email',10,2);

以下add_filter()解説

上の例はメールアドレスが変更された時のコードになります。

add_filter('email_change_email', 'custom_email_change_email',10,2);

でフィルターに関数を登録します。

第一引数 フックするタイミング

上ではemail_change_email とメールアドレスが変更された時になってますが。
pass_word_change_emailにかえるとパスワード変更時のメールに対応します。

第二引数 登録する関数名

ここはわかりやすい関数名を自由につけてください。
もちろん宣言しているものに限りますが。

第三引数 同じタイミングでの実行優先度

複数関数を実行する時に便利そうですが、今回はデフォルト値の10を指定しています。

第四引数 登録した関数に受け渡す引数の数

デフォルト値は1ですが、ユーザーのデータが欲しい場合は2以上にする必要があります。

以下関数内処理解説

基本的にはwp_mail()と同じです。
連想配列の各キーに任意の値を登録してください。指定してない場合はデフォルトの値が追加されます。

$array['to']

メールの宛先を指定、デフォルトはメールアドレスが変更されたユーザーになります。

$array['subject']

件名です。

$array['message']

本文です。以下の文字列は対応する登録された値と置き換わります。

  • ##USERNAME###
    ログイン名 user_login
  • ###SITENAME###
    サイトのタイトル blogname
  • ###ADMINEMAIL###
    管理者のメールアドレス admin
    email
  • ###EMAIL###
    変更したユーザーのメールアドレス user_email
  • ###SITEURL###
    現在のサイトのホームURL

$array['headers']

to以外のヘッダ情報を記載します。
書き方は上のコードを参考にしてください。
CcやBccには複数アドレスを登録したいことも多いと思いますので、是非覚えておきたいですね。

以上、パスワードかメールアドレスを変更した時に送信されるメールのカスタム方法でした。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ