【WordPress】アカウント登録時のメールを変更する

【WordPress】アカウント登録時のメールを変更する

WordPressのアカウント登録時に送信されるメールの変更方法を紹介します。

WordPressでアカウント登録を行うとデフォルトでは「登録者」と「管理者」に通知メールが送信されます。

このメールはWordPressの設定画面では変更できないので、プラグインで変更するかコードから変更する必要があります。

後者の方をメインとしますが、前者の方も少し見ていきましょう。

プラグインでの変更方法

登録のメールを変更したいという時点ですでに何らかのメンバーシップ系プラグインが使用されていることが多いと思います。

その場合、設定画面にメールの有無や送信内容の変更ができることが多いです。

代表的なプラグインを少し見てみましょう。

Ultimate Member

WordPressのメンバーシッププラグインとしては広く使われているプラグインになります。

ユーザー権限の設定が出来たり、フォームを作成できたりと利便性は高いです。

このプラグインは7割ぐらい日本語化されているので設定も見やすいと思います。

「管理画面」⇒「Ultimate Member」⇒「設定」⇒「メール」

から変更可能です。

登録者に送られるのが「アカウント歓迎メール」、管理者に送られるのが「新規ユーザーの通知」となっています。

HTMLメールが送信可能で、特定の変数が「{site_name}」のような形で使用可能です。

Simple WordPress Membership

こちらは課金を伴う会員制サイトによく用いられるプラグインです。

名前の通りお手軽に利用でき、購入ボタンの設置やpaypal,stripeとの連携、購入後の会員権限の設定、サブスクリプションサービスと幅広く備えてあります。

こちらも8割ぐらいは翻訳済なので英語がわからない人でも利用しやすいプラグインになっています。

「管理画面」⇒「WP Membership」⇒「設定」⇒「メール設定」

から変更可能です。

中段ぐらいにある「メール設定(登録完了)」から登録者、管理者のどちらも変更可能です。

コードでの変更

続いてコードから変更方法です。

メール送信前にフックが設定されていますので、そのフックからどちらも変更することが可能です。

  • 登録者・・・wp_new_user_notification_email
  • 管理者・・・wp_new_user_notification_email_admin
apply_filters( 'wp_new_user_notification_email', $wp_new_user_notification_email, $user, $blogname )
  • $wp_new_user_notification_email・・・現在のメール設定「to」「subject」「message」「headers」の連想配列
  • $user・・・登録したユーザー( WP_User )
  • $blogname・・・サイト名

使用例(登録者)

add_filter( 'wp_new_user_notification_email', function( $wp_new_user_notification_email, $user, $blogname ) {
    // 宛先 登録者のメールアドレスなので通常変更は必要ない
    // $wp_new_user_notification_email['to'] = $user->data->user_email;

    // ヘッダー名変更 例) From: KumaTechLab <contact@kumatech-lab.com>
    $wp_new_user_notification_email['headers'] = "From: $blogname <$admin_email>";

    // 件名変更 %s部分にはサイト名が入る
    $wp_new_user_notification_email['subject'] = '「%s」登録完了';

    // メッセージ変更
    $message  = 'ご登録ありがとうございます。' . "\r\n\r\n";
    $message .= '下記URLからログインできます。' . "\r\n";
    $message .= home_url() . "\r\n\r\n";
    $message .= $blogname . "\r\n";

    $wp_new_user_notification_email['message'] = $message;

    return $wp_new_user_notification_email;
}, 10, 3 );

fromはデフォルトだと「WordPress」になっていたような気がするので変更することをお勧めします。メールアドレスはサイトのお問い合わせ用などを設定しておくと良いです。

件名は「%s」を入れておくとサイト名に変更できます。

メッセージは例みたいに繋ぐ感じでもヒアドキュメントを使用しても構いません。

実用的にしていくとおそらくuserの情報を多く使用すると思います。

WP_Userで保持している情報、get_user_metaで取得できる情報を把握しておくと幅が広がります。

使用例(管理者)

add_filter( 'wp_new_user_notification_email_admin', function( $wp_new_user_notification_email_admin, $user, $blogname ) {
    // 宛先 wordpressに登録していないメールアドレスを使用する場合
    // $wp_new_user_notification_email_admin['to'] = 'sample@example.com';

    // ヘッダー変更
    $headers[] = "Cc: Sub Admin <sub@sub-admin.com>";
    $headers[] = "Bcc: Sub Sub Admin <subsub@sub-sub-admin.com>";
    $wp_new_user_notification_email_admin['headers'] = $headers;

    // 件名変更
    $wp_new_user_notification_email_admin['subject'] = '「%s」新規ユーザー登録';

    $message  = '新規登録がありました。' . "\r\n\r\n";
    $message .= '以下URLから確認できます。' . "\r\n";
    $message .= user_admin_url() . "\r\n\r\n";
    $message .= $blogname . "\r\n";

    $wp_new_user_notification_email_admin['message'] = $message;

    return $wp_new_user_notification_email_admin;
}, 10, 3 );

管理者の場合も登録者とほとんど一緒です。

まとめ

以上、登録時メールの変更方法でした。

コードの方も簡単なので、プラグインを使用せずに変更したい場合はそこだけフックさせてあげると良いかもしれません。

プラグインを利用している場合で管理画面の設定項目で対応できない場合がおそらく一番手間がかかります。

プラグイン内のメール送信に関わってくる箇所にフックがあればフックを変更し、フックが用意されていなければプラグインのフック自体を解除してから上記のように対応する必要があります。