デフォルトの登録メールを変更するには?(プラグインおよび/または非プラグイン)


54

新規ユーザーの登録後、WPはログイン/パスワード、およびログインページへのリンクを記載したメールを送信します。

このデフォルトのメールテンプレートを変更する方法はありますか?また、件名と送信者を変更したいと思います。

編集:興味のある方のために、ここにプラグインソリューションがあります。

回答:


62

新しいユーザーの電子メールは、wp_new_user_notification()プラグイン可能な機能を使用して送信されます。つまり、上書きすることができます。

// Redefine user notification function
if ( !function_exists('wp_new_user_notification') ) {
    function wp_new_user_notification( $user_id, $plaintext_pass = '' ) {
        $user = new WP_User($user_id);

        $user_login = stripslashes($user->user_login);
        $user_email = stripslashes($user->user_email);

        $message  = sprintf(__('New user registration on your blog %s:'), get_option('blogname')) . "\r\n\r\n";
        $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
        $message .= sprintf(__('E-mail: %s'), $user_email) . "\r\n";

        @wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), get_option('blogname')), $message);

        if ( empty($plaintext_pass) )
            return;

        $message  = __('Hi there,') . "\r\n\r\n";
        $message .= sprintf(__("Welcome to %s! Here's how to log in:"), get_option('blogname')) . "\r\n\r\n";
        $message .= wp_login_url() . "\r\n";
        $message .= sprintf(__('Username: %s'), $user_login) . "\r\n";
        $message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n\r\n";
        $message .= sprintf(__('If you have any problems, please contact me at %s.'), get_option('admin_email')) . "\r\n\r\n";
        $message .= __('Adios!');

        wp_mail($user_email, sprintf(__('[%s] Your username and password'), get_option('blogname')), $message);

    }
}

@Bainternetこれを機能させることができないようです。これを関数ファイルに追加しましたが、標準の電子メールは送信され続けます。私はマルチサイトにいますが、それは問題ではないでしょう?

6
OK、今それを入手しましたfunctions.php。ファイルに追加するときではなく、別個のプラグインとしてのみ機能するようです。これで完璧に動作するようになりました。このすばらしいコードに感謝します!

マルチサイトでも機能しますか?マルチサイトには、通知メールを送信するためのms-functions.php内に多数の関数があることがわかります。
シシル

マルチサイトの使用方法wpmu_signup_user_notificationだと思います。
ワイク14年

この答えは数年前のものです。受け入れられた答えは私にはうまくいきません。(functions.phpに追加しても、新しいユーザーが登録するときに送信されるメールには何の違いもありません。)新しい質問を投稿する必要がありますか?
キットジョンソン

23

2018年以降のユーザーの場合:

WordPress 4.9.0以降、このために使用できる新しいフィルターがあります(プラグインはもう必要ありません):

管理者に送信される電子メールの使用例(これをテーマのfunctions.phpに貼り付けることができます):

add_filter( 'wp_new_user_notification_email_admin', 'custom_wp_new_user_notification_email', 10, 3 );

function custom_wp_new_user_notification_email( $wp_new_user_notification_email, $user, $blogname ) {
    $wp_new_user_notification_email['subject'] = sprintf( '[%s] New user %s registered.', $blogname, $user->user_login );
    $wp_new_user_notification_email['message'] = sprintf( "%s ( %s ) has registerd to your blog %s.", $user->user_login, $user->user_email, $blogname );
    return $wp_new_user_notification_email;
}

あるいは、wp_new_user_notification_emailwp_new_user_notification_email_adminフィルターを使用できます。興味のある方は、の完全なドキュメントとソースコードをご覧くださいwp_new_user_notification()
ピート

ありがとう、Pete、これは4.9.0で導入されたように見え、より良い解決策のように見えます。
エドゥWassの

3

これはfunctions.phpでは機能しません。このコードをプラグイン内に配置する必要があります。

このプラグインを作成しない場合は、このリンクを使用してください

ここでこの関数形式の更新コードを取得することを忘れないでください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.