【WordPress】ユーザー情報変更時の自動返信メール内容を独自の自動返信メールにカスタマイズする方法

テクノロジー

WordPressを導入する中でブログや企業のサイトとして使っている人が多いと思います。WordPressはそれ以外にもネットショップだったり、会員サイトを作ることができます。ネットショップや会員サイトを構築する上で新規ユーザー登録してもらうと思います。そして、ユーザーが自分の情報(プロフィール)を変更すると、自動返信メールが送られます。

パスワードを変更した際の実際の自動返信メールの例がこちら

こんにちはユーザーIDさん

あなたのパスワードがHYZ STUDIO BLOGで変更されたことをお知らせします。

もしパスワードを変更した覚えがない場合、次のサイト管理者に連絡してください。
mail@exsample.com

このメールは「user@exsample.com」に送信されました。

HYZ STUDIO BLOG
https://hyzstudioblog.com

親切じゃない。とりあえず変更があったという薄っぺらい内容の自動返信メールになってしまう。パスワードリセットや新規ユーザー登録はプラグインで簡単にメール内容を変更できるのに、メールアドレスやパスワードを変更した場合、どうすればメール内容を変更できるか悩んでしまうと思います。

私もその一人で、かなり悩みましたが、何とか対応することができました。もしユーザーがプロフィールを変更したら、独自の自動返信メールを送りたいという方は、その方法を書きますので、ぜひお役立てください。

デフォルトの自動返信メールを停止する

まず、独自の自動返信メールを送るために、デフォルトの自動返信メールを停止する必要があります。パスワード変更やメールアドレス変更を行った時に「独自の自動返信メール」「デフォルトの自動返信メール」の2通送ってしまうので必ず停止しましょう。

デフォルトの自動返信メールを停止する方法は以下のコードをfunction.phpに追加してください。

パスワード変更時の自動返信メールを停止する

add_filter( 'send_password_change_email', '__return_false' );

メールアドレス変更時の自動返信メールを停止する

add_filter( 'send_email_change_email', '__return_false' );

上記2つのコードを追加すればとりあえず停止することができました。

差出人名・送信元メールアドレスを変更する

独自の自動返信メールを送るにあたり、まずは差出人名・送信元メールアドレスの設定を行います。この設定をしないとデフォルトの差出人名・送信元メールアドレスになってしまいます。デフォルトだと差出人名が「WordPress」になり、送信元メールアドレスは「Wordpress@サイトURL」になります。見ての通り、恐ろしく不親切ですよね。

以下のコードをfunction.phpに追加・修正してください。

function set_mail_from( $email ) {
    return 'mail@exsample.com'; //送信元メールアドレス設定
}
function set_mail_from_name( $email_from ) {
    return 'ハイズスタジオブログ運営事務局'; //差出人名設定
}
add_filter( 'wp_mail_from', 'set_mail_from' );
add_filter( 'wp_mail_from_name', 'set_mail_from_name' );

2行目に指定の送信元メールアドレスへ変更し、5行目に指定の差出人名へ変更してください。これで独自の自動返信メールの差出人設定ができました。

件名・メール本文を変更する

最後は独自の「件名」「メール本文」を変更します。ここではユーザー情報を取得し、そのデータをメール本文に反映させます。また、変更された日時の取得もします。

以下のコードをfunction.phpに追加・修正してください。

function my_user_update_notice($user_id){
 	$user = wp_get_current_user(); //ユーザー情報取得
 	$u_name = $user->user_login; //ユーザーログイン情報取得
 	$u_mail = $user->user_email; //ユーザーメールアドレス情報取得

    // 各種変数
    $obj = array(
        'blog_url' =>  get_bloginfo('url'), //ブログURL取得
        'blog_name' => get_bloginfo('name'), //ブログ名取得
        'up_date' => date_i18n('Y年m月d日 H時i分') //現在日時取得
    );

    $subject = 'ここに件名を入力'; //件名設定
 
// EOF~EOF;までがメール本文。自由に設定
$message = <<< EOF
{$u_name}様のプロフィールを更新しました。
変更内容はマイページの登録情報からご確認ください。

更新日:{$obj['up_date']}
==============================================
{$obj['blog_name']}
URL:{$obj['blog_url']}
==============================================
EOF;
 
    wp_mail( $u_mail, $subject, $message);
}
add_action('profile_update', 'my_user_update_notice', 20);

2行目に現在ログイン中のユーザー情報の取得を行います。3行目ではユーザー情報のユーザーID(ログインID)を取得、4行目はユーザ情報のメールアドレスを取得します。

他にもユーザーの情報を取得できます。

次に署名用のURLやサイト名を8,9行目で取得します。10行目で現在の日時を取得します。現在日時の取得には「date_i18n」関数を使います。

13行目に件名(メールタイトル)の設定をします。

16行目にメール本文を設定します。「EOF」から「EOF」の間にメール本文を追加してください。2行目~11行目までに取得した情報を{$変数名}で呼び出します。

これで、独自の自動返信メールが完成しました!最後にfunction.phpをアップロードして完了。テストでユーザープロフィールを変更してみましょう。独自の自動返信メールのみが上手く送信されていると思います。

このような形で独自の自動返信メールを作ることができました。デフォルトの自動返信メールを停止したい!独自の自動返信メールを作りたい!という人は是非ご活用ください!