Bagaimana cara mengubah email pendaftaran default? (plugin dan / atau non-plugin)

54

Setelah pendaftaran pengguna baru, WP mengirimkan email dengan login / kata sandi, dan tautan ke halaman login.

Apakah ada cara untuk mengubah templat email cacat ini? Saya juga ingin mengubah topik pembicaraan dan pengirim.

Sunting: Bagi siapa pun yang tertarik, berikut adalah solusi plugin.

mike23
sumber

Jawaban:

62

email pengguna baru dikirim menggunakan wp_new_user_notification()fungsi yang artinya pluggable yang dapat Anda timpa:

// 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
sumber
@Bainternet Sepertinya saya tidak bisa membuatnya berfungsi, saya telah menambahkan ini ke file fungsi saya, tetapi email standar terus terkirim. Saya menggunakan multisite, tapi itu tidak masalah, kan?
6
OK sekarang, sepertinya hanya berfungsi sebagai plugin terpisah, bukan ketika Anda menambahkannya ke functions.phpfile Anda . Sekarang bekerja dengan sempurna, terima kasih lagi untuk sepotong kode yang bagus!
Apakah ini berfungsi untuk multisite juga? Saya dapat melihat multisite memiliki banyak fungsi di dalam ms-functions.php untuk mengirim email notifikasi.
Sisir
Penggunaan multisite wpmu_signup_user_notificationsaya pikir.
Wyck
Jawaban ini berumur beberapa tahun. Jawaban yang diterima tidak berhasil untuk saya. (Menambahkannya ke functions.php tidak ada bedanya dengan semua email yang dikirim ketika pengguna baru mendaftar.) Haruskah saya memposting pertanyaan baru?
Kit Johnson
23

Untuk pengguna 2018 dan seterusnya:

Karena WordPress 4.9.0 ada filter baru yang dapat Anda gunakan untuk ini (tidak perlu lagi menggunakan plugin):

Contoh penggunaan pada email yang dikirim ke Admin (Anda dapat menempelkan ini di functions.php tema Anda ):

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;
}
Edu Wass
sumber
Atau orang dapat menggunakan wp_new_user_notification_emaildan wp_new_user_notification_email_adminmenyaring. Mereka yang tertarik dapat melihat dokumentasi lengkap dan kode sumber untuk wp_new_user_notification().
Pete
Terima kasih Pete, sepertinya itu diperkenalkan pada 4.9.0 dan sepertinya solusi yang lebih baik.
Edu Wass
3

Ini tidak akan berfungsi pada functions.php, Anda harus meletakkan kode ini di dalam plugin.

jika Anda sekarang tidak membuat plugin untuk ini gunakan saja tautan ini

jangan lupa untuk mengambil kode pembaruan dari formulir fungsi ini di sini

Erez Lieberman
sumber