จะเปลี่ยนอีเมลการลงทะเบียนเริ่มต้นได้อย่างไร (ปลั๊กอินและ / หรือไม่ใช่ปลั๊กอิน)


54

หลังจากการลงทะเบียนผู้ใช้ใหม่ WP จะส่งอีเมลพร้อมล็อกอิน / รหัสผ่านและลิงก์ไปยังหน้าล็อกอิน

มีวิธีในการเปลี่ยนแม่แบบอีเมล defaut นี้หรือไม่? ฉันต้องการเปลี่ยนหัวเรื่องและผู้ส่งด้วย

แก้ไข: สำหรับทุกคนที่สนใจนี่คือวิธีแก้ปัญหาปลั๊กอิน

คำตอบ:


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);

    }
}

@Benternet ฉันไม่สามารถใช้งานได้ฉันเพิ่มสิ่งนี้ลงในไฟล์ฟังก์ชั่นของฉันแล้ว แต่อีเมลมาตรฐานยังคงส่งต่อไป ฉันอยู่ในหลายไซต์ แต่นั่นไม่ควรสำคัญใช่ไหม

6
ตกลงได้แล้วตอนนี้ดูเหมือนว่าจะทำงานเป็นปลั๊กอินแยกต่างหากเท่านั้นไม่ใช่เมื่อคุณเพิ่มลงในfunctions.phpไฟล์ของคุณ ตอนนี้มันใช้งานได้ดีขอบคุณอีกครั้งสำหรับโค้ดที่ดี!

ใช้ได้กับหลายไซต์ด้วยหรือไม่ ฉันเห็นหลายไซต์มีฟังก์ชั่นมากมายภายใน ms-Functions.php สำหรับส่งอีเมลแจ้งเตือน
Sisir

wpmu_signup_user_notificationฉันคิดว่าใช้หลายไซต์
Wyck

คำตอบนี้มีอายุหลายปี คำตอบที่ยอมรับใช้ไม่ได้สำหรับฉัน (การเพิ่มไปยัง functions.php ไม่ได้สร้างความแตกต่างให้กับอีเมลใด ๆ ที่ส่งไปเมื่อผู้ใช้ใหม่ลงทะเบียน) ฉันควรโพสต์คำถามใหม่หรือไม่?
Kit Johnson เมื่อ

22

สำหรับผู้ใช้ปี 2561 เป็นต้นไป:

ตั้งแต่ WordPress 4.9.0 มีตัวกรองใหม่ที่คุณสามารถใช้สำหรับสิ่งนี้ (ไม่จำเป็นต้องมีปลั๊กอินอีกต่อไป):

ตัวอย่างการใช้งานในอีเมลที่ส่งถึงผู้ดูแลระบบ (คุณสามารถวางสิ่งนี้ลงในหน้าที่ของธีมของคุณได้):

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_emailและwp_new_user_notification_email_adminตัวกรอง ผู้ที่สนใจสามารถตรวจสอบเอกสารเต็มรูปแบบและ source codewp_new_user_notification()สำหรับ
Pete

ขอขอบคุณพีทดูเหมือนว่าจะได้รับการแนะนำใน 4.9.0 และดูเหมือนว่าจะเป็นทางออกที่ดีกว่า
Edu Wass

3

สิ่งนี้จะใช้ไม่ได้ในฟังก์ชั่น PHP คุณต้องใส่โค้ดนี้ลงในปลั๊กอิน

หากคุณไม่ต้องการสร้างปลั๊กอินสำหรับสิ่งนี้เพียงแค่ใช้ลิงค์นี้

อย่าลืมจดรหัสอัปเดตของแบบฟอร์มฟังก์ชั่นนี้ที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.