2018.08.07

[WordPress]新規ユーザー登録時に送信されるメール内容を変更する方法

こんばんは、ゾノ( @ozonosho )です。

さて、今日のブログではWordPressで新規ユーザー登録時に送信されるメール内容を変更する方法を紹介したいと思います。

Codexの関数リファレンスを読む限り、メール内容の変更はfunctions.phpでは実装できず自作のプラグインを用意しないといけないので少し大変です。

新規ユーザー登録時に送信されるメール内容を変更する方法

実装は下記の3ステップでおこないます。

  1. プラグインファイルを用意する
  2. コードを記述する
  3. プラグインをアップロードして有効化する

それぞれ説明します。

①プラグインファイルを用意する

まずは元となるプラグインファイルを用意します。

新規ユーザー登録時のメールは関数「wp_new_user_notification」で定義されていますが、この関数にはフィルターフックが用意されていないためfunctions.phpからでは変更できないんですよね。

「custom_new_user_email」と名前をつけたフォルダをつくり、その中に「custom_new_user_email.php」と名前をつけたphpファイルを用意しましょう。

このphpファイルの中にコードを記述します。

②コードを記述する

custom_new_user_email.phpの中には下記のコードを記載してください。

<?php
/*
Plugin Name: Custom New User Mail
Description: 新規ユーザー登録時に送信されるメールの内容を変更
*/
if(!function_exists('wp_new_user_notification')) {

	function wp_new_user_notification($user_id, $deprecated = null, $notify = '') {
		if ( $deprecated !== null ) {
			_deprecated_argument( __FUNCTION__, '4.3.1' );
		}

		global $wpdb, $wp_hasher;
		$user = get_userdata( $user_id );
	 
		//管理者宛のメール

		//件名
		$subject = get_option('blogname') . '|新規アカウント作成の通知';
		//本文
		$message  = '新規紹介アカウントが作成されました。' . "\r\n\r\n";
		$message .= 'ユーザー名:' . $user->user_login . "\r\n";
		$message .= 'メールアドレス:' . $user->user_email . "\r\n";

		@wp_mail(get_option('admin_email'), $subject, $message);

		if('admin' === $notify || (empty($deprecated) && empty($notify))) {
			return;
		}
	 
		$key = wp_generate_password( 20, false );
	 
		do_action( 'retrieve_password_key', $user->user_login, $key );
	 
		if(empty($wp_hasher)) {
			require_once ABSPATH . WPINC . '/class-phpass.php';
			$wp_hasher = new PasswordHash( 8, true );
		}
		$hashed = time() . ':' . $wp_hasher->HashPassword($key);
		$wpdb->update( $wpdb->users, array('user_activation_key' => $hashed), array('user_login' => $user->user_login));
	 
		//登録ユーザー宛のメール

		//件名
		$subject = get_option('blogname') . '|アカウント作成のご案内';
		// ユーザー用本文
		$message = 'このたびは' . get_option('blogname') . 'にご登録いただきありがとうございます。'  . "\r\n\r\n";
		$message .= '〇あなたの登録情報' . "\r\n";
		$message .= 'ユーザー名:' . $user->user_login . "\r\n";
		$message .= 'メールアドレス:' . $user->user_email . "\r\n\r\n";
		$message .= 'はじめに下記URLよりパスワードの設定をおこなってください。' . "\r\n\r\n";
		$message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login')  . "\r\n\r\n";
		$message .= 'どうぞよろしくお願いいたします。';

		wp_mail($user->user_email, $subject, $message);
	}
}
?>

件名や本文の中身は、ご自身のサイトで送信したい内容にあわせて中身は適宜変更してください。

WordPressのバージョン4.3ぐらい以降はセキュリティ強化によりパスワードの出力ができなくなったので、上記コードのようにパスワード設定用のリンクを表示してあげましょう。

③プラグインをアップロードして有効化する

コードの記述ができたら、「custom_new_user_email」フォルダをプラグインフォルダ()にアップロードしましょう。

アップロードすると管理画面のプラグインページに自作したプラグインが表示されるので有効化してください。

実際に新規ユーザーを作成してカスタマイズしたメールが送信されれば成功です。

おわりに

以上、今回の記事ではWordPressで新規ユーザー登録時に送信されるメール内容を変更する方法を紹介させていただきました。

この部分のカスタマイズ情報はあまり出回っていないため、すこしでも参考になれば幸いです。

当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。

あなたのサイトに理想の機能を実装!WordPressカスタマイズサービス

本サービスはあなたのWordPressサイトに理想の機能を実装するサービスとなります。 どのような機能・要望でも実現可能です! Wo......

→この記事を読む