登録通知メールの内容を変更する
WordPressでは新規ユーザー登録がされた際に管理者と登録ユーザー宛に登録通知メールを送ります。
登録通知メールの件名や本文の内容を変更したい場合は、下記のいずれかの方法で実現することができます。
プラグインを使用する (Theme My Login)
プラグインの「Theme My Login」を使用する場合は、下記のように設定します。
- Theme My Loginをインストールします。
※ インストール方法は「ログイン画面をテーマの見た目と同じにする」を参考にしてください。
※ 日本語化は「Theme My Loginを日本語化する」を参考にしてください。 - 管理メニューの「TML」>「一般」から「Custom E-mailを有効にする」にチェックし、「変更を保存」をクリックします。
- 管理メニューの「TML」>「メールアドレス」のページに移動し、「新規ユーザー」の欄に件名やメッセージを設定します。「新規ユーザー」はユーザー側に送られるメールになります。
- 「新規ユーザー管理」の欄に件名やメッセージを設定します。「新規ユーザー管理」は管理者に送られるメールになります。
- 設定ができたらページ下部の「変更を保存」をクリックします。
以上で設定は終了です。試しに登録してみて設定した文面でメールが届いていればOKです。
自力でプラグインを作成する
Theme My Loginなどのプラグインは便利ですが、いろいろな機能がついてくるため不要な場合があるかもしれません。また、細かい調整を行いたい場合は既存のプラグインではすべて対応できないかもしれません。
既存のプラグイン無しで対応したい場合は自力でプラグインを作成して下記のコードをプラグインのファイルに含めます。
(プラグインの作成方法は「はじめてのプラグイン作成」を確認してください)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
// 登録メールの内容を変更します。 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 ); // ブログ名(サイト名)はHTMLのページに表示できるようエスケープ(HTMLの特殊文字を変換)しているため元に戻す $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); // === 管理者宛のメール === // 管理者用件名 $subject = "{$blogname}に新規ユーザーが登録されました。"; // 管理者用本文 $message = "ユーザー名は " . $user->user_login . " です。"; @wp_mail(get_option('admin_email'), $subject, $message); // === この部分は変更しないようにしてください === // `$deprecated was pre-4.3 `$plaintext_pass`. An empty `$plaintext_pass` didn't sent a user notifcation. if ( 'admin' === $notify || ( empty( $deprecated ) && empty( $notify ) ) ) { return; } // Generate something random for a password reset key. $key = wp_generate_password( 20, false ); /** This action is documented in wp-login.php */ do_action( 'retrieve_password_key', $user->user_login, $key ); // Now insert the key, hashed, into the DB. 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 = "[{$blogname}] ユーザー登録を行いました。"; // ユーザー用本文 $message = "あなたのユーザー名は {$user->user_login} です。\r\n\r\n"; $message .= "パスワードを設定するには以下のアドレスへ移動してください。\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 .= "ログインURLは" . wp_login_url() . "です。\r\n"; wp_mail($user->user_email, $subject, $message); } } |
WordPress 4.3.1以前は下記のようなコードになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
// 登録メールの内容を変更します。 if ( !function_exists('wp_new_user_notification') ) { function wp_new_user_notification($user_id, $plaintext_pass = '') { $user = get_userdata( $user_id ); // ブログ名(サイト名)はHTMLのページに表示できるようエスケープ(HTMLの特殊文字を変換)しているため元に戻す $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); // === 管理者宛のメール === $subject = "{$blogname}に新規ユーザーが登録されました。"; $message = "ユーザー名は " . $user->user_login . " です。"; @wp_mail(get_option('admin_email'), $subject, $message); if ( empty($plaintext_pass) ) return; // === 登録ユーザー宛のメール === $subject = "[{$blogname}] ユーザー登録を行いました。"; $message = ""; $message .= "あなたのユーザー名は " . $user->user_login . " です。\r\n"; $message .= "あなたのパスワードは " . $plaintext_pass . " です。\r\n"; $message .= "パスワードは大切に保管してください。\r\n"; $message .= "\r\n"; $message .= "ログインURLは " . wp_login_url() . " です。\r\n"; wp_mail($user->user_email, $subject, $message); } } |
更新履歴
- 2016/01/16 Theme My Loginでの変更方法を記載しました。また、WordPress 4.3.1以降では登録メール用の関数の内部がかなり変更されていたため4.3.1以降と以前のコードを併記しました。
- 2016/01/10 functions.phpに記載するものとして誤って紹介していましたが、プラグインとして作成しないと有効にならないため文章を一部変更しました。
(上記のように関数ごと置き換えられるものは「プラガブル関数」と呼ばれていて、functions.phpだと読み込みのタイミング的に置き換えができませんでした) - 2015/02/09 初版