WordPressから自動送信されるメールをカスタマイズする方法

2020年02月08日 更新:2022年01月21日 WordPress

WordPressから送信されるメールを完全カスタマイズする方法

WordPressで会員登録をしたり、メールアドレス・パスワードを変更すると、WordPressから通知メールが送信されます。この自動送信されるメールの「件名」や「メッセージ」をカスタマイズする方法をご紹介します。

WordPressから送信されるメールの「送信元アドレス」を変更します。このメールアドレスは、デフォルトで「wordpress@ドメイン名」になっているので、これをサイトのメールアドレスに書き換えます。「wp_mail_from」のフックを利用して functions.php に記載してください。

/* 送信元のメールアドレスをカスタマイズ */
function custom_mail_from( $email ) {
 return 'メールアドレス';
}
add_filter( 'wp_mail_from', 'custom_mail_from' );

次はWordPressから送信されるメールの「差出人名(From)」を変更します。この差出人名は、デフォルトで「WordPress」になっているので、これをサイト名に書き換えます。「wp_mail_from_name」のフックを利用して functions.php に記載してください。

/* 送信メールの差出人名をカスタマイズ */
function custom_mail_from_name( $email_from ) {
 return '差出人名(サイト名)';
}
add_filter( 'wp_mail_from_name', 'custom_mail_from_name' );

これでWordPressから送信されるメールアドレスと差出人名が変更できました。

返信不可のメールアドレス

企業などのコーポレートサイトでは、自動送信されるメールに直接返信させたくない場合に、メールアドレスを「no-reply@example.com」と設定して、返信を受け付けない(noreply)ことを明示することがあります。

会員登録時にWordPressから送信されるメールを変更します。このメールは登録者宛と管理者宛のメールがありますので、それぞれ設定してください。

まずは登録者宛のメールを設定します。「wp_new_user_notification_email」のフックを利用して functions.php に記載してください。

/* 会員登録時に「登録者」へ送信されるメールをカスタマイズ */
function custom_new_user_notification_email( $new_user_notification_email, $user, $blogname ) {
 
 //件名を編集
 $subject = '会員登録完了のお知らせ【サイト名】';
 
 //ユーザー情報を取得
 $user_name = stripslashes( $user->user_login );
 $user_email = stripslashes( $user->user_email );
 
 //メッセージを編集
 $message = $user_name . ' 様' . "\r\n";
 $message .= "\r\n";
 $message .= $blogname . 'にご登録いただき、誠にありがとうございます。' . "\r\n";
 $message .= '会員登録が完了いたしましたので、ご連絡を申し上げます。' . "\r\n";
 $message .= "\r\n";
 $message .= '下記の登録情報をご確認のうえ、サイトにログインしてください。' . "\r\n";
 $message .= "\r\n";
 $message .= 'ユーザー名:' . $user_name . "\r\n";
 $message .= 'メールアドレス:' . $user_email;
 
 //件名とメッセージを表示
 $new_user_notification_email[ 'subject' ] = $subject;
 $new_user_notification_email[ 'message' ] = $message;
 return $new_user_notification_email;
}
add_filter( 'wp_new_user_notification_email', 'custom_new_user_notification_email', 10 , 3 );

次に管理者宛のメールを設定します。「wp_new_user_notification_email_admin」のフックを利用して functions.php に記載してください。

/* 会員登録時に「管理者」へ送信されるメールをカスタマイズ */
function custom_new_user_notification_email_admin( $new_user_notification_email_admin, $user, $blogname ) {
 
 //件名を編集
 $subject = '新規会員登録の通知【サイト名】';
 	
 //ユーザー情報を取得
 $user_name = stripslashes( $user->user_login );
 $user_email = stripslashes( $user->user_email );
 
 //メッセージを編集
 $message = '管理者へお知らせです。' . "\r\n";
 $message .= "\r\n";
 $message .= $blogname . 'に新規会員登録がありました。' . "\r\n";
 $message .= "\r\n";
 $message .= 'ユーザー名:' . $user_name . "\r\n";
 $message .= 'メールアドレス:' . $user_email;
 
 //件名とメッセージを表示
 $new_user_notification_email_admin[ 'subject' ] = $subject;
 $new_user_notification_email_admin[ 'message' ] = $message;
 return $new_user_notification_email_admin;
}
add_filter( 'wp_new_user_notification_email_admin', 'custom_new_user_notification_email_admin', 10 , 3 );

これで会員登録時にWordPressから送信されるメールが変更できました。メッセージについては、ご自身のサイトに合った内容に変更してください。

メールアドレス変更時にWordPressから送信されるメールを変更します。このメールは登録者へ送信されますが、管理者へは送信されません。

デフォルトのメールは、日本語に翻訳されたフレンドリーな文章なので、コーポレートサイトの場合は少し違和感があります。そのため「件名・メッセージ」を書き換えます。「email_change_email」のフックを利用して functions.php に記載してください。

/* メールアドレス変更時に送信されるメールの「件名・メッセージ」をカスタマイズ */
function custom_email_change_email( $email_change_email ) {
 
 //件名を編集
 $subject = 'メールアドレス変更のお知らせ【サイト名】';
 
 //メッセージを編集
 $message = '###USERNAME### 様' . "\r\n";
 $message .= "\r\n";
 $message .= '###SITENAME###で、あなたのメールアドレスが変更されました。' . "\r\n";
 $message .= "\r\n";
 $message .= '新メールアドレス:###NEW_EMAIL###' . "\r\n";
 $message .= '旧メールアドレス:###EMAIL###' . "\r\n";
 $message .= "\r\n";
 $message .= 'もしご自身でメールアドレスを変更した覚えがない場合は、' . "\r\n";
 $message .= '管理者「###ADMIN_EMAIL###」までご連絡ください。';
 
 //件名とメッセージを表示
 $email_change_email[ 'subject' ] = $subject;
 $email_change_email[ 'message' ] = $message;
 return $email_change_email;
}
add_filter( 'email_change_email', 'custom_email_change_email' );

「email_change_email」のフックでは、メッセージをカスタマイズする際に使用できる「特別な文字列」が用意されています。この文字列を使えば、ユーザー名やメールアドレスなどを引数として取得して表示できるのでとても便利です。

特別な文字列を記載しておきますので、これらの文字列を使用して、ご自身のサイトに合ったメッセージを作成してください。(件名には文字列は使用できません)

「email_change_email」で使用できる文字列

  • ###USERNAME###(ユーザー名)
  • ###NEW_EMAIL###(新しいメールアドレス)
  • ###EMAIL###(古いメールアドレス)
  • ###SITENAME###(サイト名)
  • ###SITEURL###(サイトURL)
  • ###ADMIN_EMAIL###(管理者メールアドレス)

メールアドレス変更の承認メールについて

WordPress 4.9 からメールアドレスの変更には承認が必要になり、新しいメールアドレス宛に「メールアドレス変更リクエスト」メールが送信されるようになりました。この承認メールの中にあるリンクをクリックすると、変更前の古いメールアドレスに今回作成したメールが送信される仕様に変わっています。

パスワード変更時にWordPressから送信されるメールを変更します。このメールは登録者へ送信されますが、管理者へは送信されません。「password_change_email」のフックを利用して、件名とメッセージを書き換えます。

/* パスワード変更時に送信されるメールの「件名・メッセージ」をカスタマイズ */
function custom_password_change_email( $password_change_email ) {
 
 //件名を編集
 $subject = 'パスワード変更のお知らせ【サイト名】';
 
 //メッセージを編集
 $message = '###USERNAME### 様' . "\r\n";
 $message .= "\r\n";
 $message .= '###SITENAME###で、あなたのパスワードが変更されました。' . "\r\n";
 $message .= "\r\n";
 $message .= 'もしご自身でパスワードを変更した覚えがない場合は、' . "\r\n";
 $message .= '管理者「###ADMIN_EMAIL###」までご連絡ください。';
 
 //件名とメッセージを表示
 $password_change_email[ 'subject' ] = $subject;
 $password_change_email[ 'message' ] = $message;
 return $password_change_email;
}
add_filter( 'password_change_email', 'custom_password_change_email' );

「password_change_email」のフックも、カスタマイズする際に使用できる「特別な文字列」が用意されています。ただし、パスワードを表示する文字列はありません。

「password_change_email」で使用できる文字列(引数)

  • ###USERNAME###(ユーザー名)
  • ###EMAIL###(メールアドレス)
  • ###SITENAME###(サイト名)
  • ###SITEURL###(サイトURL)
  • ###ADMIN_EMAIL###(管理者メールアドレス)

パスワードリセット時にWordPressから送信されるメールを変更します。このメールは登録者宛と管理者宛のメールがありますので、それぞれ設定してください。

まずは登録者宛のメールを設定します。件名は「retrieve_password_title」のフックを使い、メッセージは「retrieve_password_message」を使って書き換えます。

/* パスワードリセット時に「登録者」へ送信されるメールをカスタマイズ */

/* 件名を設定 */
function custom_retrieve_password_title( $title, $user_login, $user_data ) {
 $title = 'パスワードリセットのお知らせ【サイト名】';
 return $title;
}
add_filter( 'retrieve_password_title', 'custom_retrieve_password_title', 10, 3 );

/* メッセージを設定 */
function custom_retrieve_password_message( $message, $key, $user_login, $user_data ) {
 
 //サイト情報を取得
 $blogname = stripslashes( get_option( 'blogname' ) );
 
 //メッセージを編集
 $message = $user_login . ' 様' . "\r\n";
 $message .= "\r\n";
 $message .= 'あなたのアカウントに対して、パスワードのリセットが要求されました。' . "\r\n";
 $message .= "\r\n";
 $message .= 'もしこのリクエストが間違いだった場合は、このメールを無視してください。' . "\r\n";
 $message .= '何も操作をしなければ、これまでのパスワードがそのまま使用できます。' . "\r\n";
 $message .= "\r\n";
 $message .= 'パスワードをリセットする場合は、次のリンクをクリックしてください。' . "\r\n";
 $message .= 'パスワード変更画面にアクセスしますので、新しいパスワードを入力してください。' . "\r\n";
 $message .= "\r\n";
 $message .= network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . "\r\n";
 $message .= "\r\n";
 $message .= $blogname;
 
 //メッセージを表示
 return $message;
}
add_filter( 'retrieve_password_message', 'custom_retrieve_password_message', 10, 4 );

次に管理者宛のメールを設定します。「wp_password_change_notification_email」のフックを利用して、functions.php に記載してください。

/* パスワードリセット時に「管理者」へ送信されるメールをカスタマイズ */
function custom_password_change_notification_email( $password_change_notification_email, $user, $blogname ) {
	
//件名を編集
$subject = 'パスワードリセットの通知【サイト名】';
 
 // ユーザー情報を取得
 $user_name = stripslashes( $user->user_login );
 
 //メッセージを編集
 $message = '管理者へお知らせです。' . "\r\n";
 $message .= "\r\n";
 $message .= $user_name . '様のパスワードがリセットされました。' . "\r\n";
 $message .= "\r\n";
 $message .= 'このメールは「パスワードをお忘れですか ?」を利用して、' . "\r\n";
 $message .= 'パスワードリセットが完了した後に送信されました。';
 
 //件名とメッセージを表示
 $password_change_notification_email[ 'subject' ] = $subject;
 $password_change_notification_email[ 'message' ] = $message;
 return $password_change_notification_email;
}
add_filter( 'wp_password_change_notification_email', 'custom_password_change_notification_email', 10, 3 );

これでパスワードリセット時にWordPressから送信されるメールが変更できました。

WordPressから送信されるメールを停止する方法を最後に追記します。管理者宛ての「パスワード変更時に送信されるメール」など必要ないという方もいると思いますので、必要に応じて使い分けてください。

//会員登録時に(登録者へ)送信されるメールを停止する
add_filter( 'wp_new_user_notification_email', '__return_false' );

//会員登録時に(管理者へ)送信されるメールを停止する
add_filter( 'wp_new_user_notification_email_admin', '__return_false' );

//メールアドレス変更時に(登録者へ)送信されるメールを停止する
add_filter( 'send_email_change_email', '__return_false' );

//パスワード変更時に(登録者へ)送信されるメールを停止する
add_filter( 'send_password_change_email', '__return_false' );

//パスワードリセット時に(管理者へ)送信されるメールを停止する
add_filter( 'wp_password_change_notification_email', '__return_false' );

WordPressから送信されるメールのカスタマイズは以上です。カスタマイズした通りにメールが送信できましたか?

ところで、会員制サイト向けの「会員登録プラグイン」を利用すれば、今回設定したうちの多くがプラグイン側で設定できます。もし会員登録プラグインを利用するなら、プラグイン側に設定項目がないものを補う形で、今回の設定を使ってみてください。きっとスマートな通知メールがユーザーへお届けできるはずです。