ปิดใช้งานอีเมลรหัสผ่านการลงทะเบียนผู้ใช้


13

ดังนั้น WordPress 4.3 จึงมีระบบรหัสผ่านใหม่ที่ทุกคนรู้จัก น่าเสียดายที่ระบบใหม่นี้ไม่ได้ส่งอีเมลถึงผู้ใช้รายใหม่

ลูกค้าของฉันใช้ระบบที่เขาส่งอีเมลที่กำหนดเองไปยังลูกค้าของเขาลงทะเบียนอีเมลด้วยตนเองแล้วส่งอีเมลที่มีข้อมูลเข้าสู่ระบบด้วยข้อความที่กำหนดเอง เราทราบว่าระบบใหม่นี้พยายามที่จะปลอดภัยมากขึ้น แต่ระบบนี้ใช้ไม่ได้กับปริมาณการควบคุมที่เขาต้องการ

ฉันพบรหัสต่อไปนี้ในการค้นหาโซลูชันเพื่อปิดอีเมลเหล่านี้ แต่ฉันคิดว่าพวกเขาจะปิดอีเมลแจ้งเตือนเมื่ออีเมลของผู้ใช้ถูกเปลี่ยนสำหรับผู้ใช้ที่ลงทะเบียนก่อนหน้านี้ไม่ใช่เมื่อสร้างครั้งแรก:

add_filter( 'send_password_change_email', '__return_false');
add_filter( 'send_email_change_email', '__return_false');

ไม่มีใครทราบวิธีปิดอีเมลรหัสผ่านเริ่มต้นเหล่านี้ที่ส่งหลังจากลงทะเบียนหรือไม่

ขอบคุณ.


2
คุณเคยลองสิ่งนี้หรือไม่? add_filter( 'user_registration_email', '__return_false');
Abhik

คำตอบ:


9

คุณสามารถสกัดกั้นอีเมลนี้ก่อนที่จะถูกส่งโดยใช้phpmailer_initเบ็ด

โดยค่าเริ่มต้นเบ็ดนี้จะยิงก่อนที่จะส่งอีเมลใด ๆ ในฟังก์ชั่นด้านล่างนี้$phpmailerจะเป็นตัวอย่างของPHPMailerและคุณสามารถใช้วิธีการในการลบผู้รับเริ่มต้นและจัดการอีเมลก่อนที่จะถูกส่ง

add_action('phpmailer_init', 'wse199274_intercept_registration_email');
function wse199274_intercept_registration_email($phpmailer){
    $admin_email = get_option( 'admin_email' );

    # Intercept username and password email by checking subject line
    if( strpos($phpmailer->Subject, 'Your username and password info') ){
        # clear the recipient list
        $phpmailer->ClearAllRecipients();
        # optionally, send the email to the WordPress admin email
        $phpmailer->AddAddress($admin_email);
    }else{
        #not intercepted
    }
}

ทำงานได้อย่างไม่มีที่ติแก้ไขปัญหาของฉันได้อย่างสมบูรณ์และเหมาะสำหรับการใช้งานอื่นเช่นกัน ขอบคุณสำหรับคำตอบที่ยอดเยี่ยม!
pattyd

3

จริงๆแล้วมันขึ้นอยู่กับว่าคุณสร้างผู้ใช้ใหม่ ถ้าคุณทำมันจากการบริหาร - ผู้ใช้ - เพิ่มใหม่คุณถูกต้อง ใน 4.3 โชคไม่ดีที่คุณไม่สามารถปิดใช้งานการส่งอีเมลแจ้งเตือนได้ แต่ถ้าคุณต้องการสร้างผู้ใช้ใหม่โดยไม่ต้องใช้อีเมลก็มีวิธี

คุณสามารถสร้างปลั๊กอินขนาดเล็กที่คุณต้องการสร้างบัญชีใหม่ด้วยตัวเองผ่านwp_insert_userฟังก์ชั่นซึ่งจะไม่ส่งอีเมลใด ๆ เป็นค่าเริ่มต้น

ฟังก์ชั่นนี้สามารถเรียกได้ว่าเป็นแบบนี้

wp_insert_user( $userdata );

โดยที่userdataพารามิเตอร์คืออาร์เรย์ที่คุณสามารถส่งผ่านข้อมูลที่จำเป็นทั้งหมด

$userdata = array(
    'user_login'  =>  'login',
    'user_pass'   =>  'password',
);

$user_id = wp_insert_user( $userdata ) ;

//On success
if ( ! is_wp_error( $user_id ) ) {
    echo "User created : ". $user_id;
}

สำหรับข้อมูลเพิ่มเติมโปรดดู Codex ที่นี่


ดังนั้นฟังก์ชั่นนี้จึงถูกเรียกใช้เมื่อใดก็ตามที่มีผู้ใช้ใหม่ถูกสร้างขึ้น
Lisa Cerilli

3

wp_new_user_notificationฟังก์ชั่น pluggable เพื่อให้คุณสามารถแทนที่ด้วยการกำหนดของคุณเอง คุณควรจะสามารถคัดลอกฟังก์ชั่นทั้งหมดจากwp-includes/pluggable.phpลงในปลั๊กอิน (หรือfunctions.php) และลบบรรทัดที่ส่งอีเมลออก


1
คุณไม่สามารถแทนที่ wp_new_user_notification ในฟังก์ชั่นของ theme ได้เพราะฟังก์ชั่นที่เสียบได้จะโหลดก่อนธีม มันจะต้องถูก overriden ในปลั๊กอินหรือ mu-plugin อ่านเพิ่มเติม: wordpress.stackexchange.com/a/55966/56759
fandasson

1

เพื่อแก้ปัญหานี้ในธีมของคุณให้สร้างmu-pluginใหม่โดยสร้างไฟล์ใหม่wp_new_user_notifications.php(ขึ้นอยู่กับชื่อของคุณ) และวางไว้ในwp-content/mu-pluginsโฟลเดอร์ หากไม่มีโฟลเดอร์ดังกล่าวให้สร้างขึ้นใหม่ อย่าลืมใส่ไฟล์ php ลงในโฟลเดอร์โดยตรงไม่ใช่โฟลเดอร์ย่อยใด ๆ

ดีกว่าดำเนินการต่อตามคำแนะนำของไซมอน - คัดลอกwp_new_user_notifications.phpวิธีจากไฟล์ที่wp-includes/pluggable.phpเป็นแบรนด์ใหม่ของคุณwp_new_user_notifications.phpและแก้ไขตามต้องการ

หากต้องการตอบคำถามของคุณ: การปิดอีเมลรหัสผ่านเริ่มต้นนั้นเพียงพอที่จะลบwp_mailการเรียกใช้วิธีการล่าสุด


0
add_filter('send_password_change_email', '__return_false');

โรงงาน แต่มันเป็นสิ่งสำคัญที่มันเพิ่มให้กับปลั๊กอินมันเป็นของตัวเองและไม่ใช่ function.php สำหรับชุดรูปแบบ

ชอบ.

class ... {
  public function __construct() {
    ...
    $this->init_hooks();
  }

  public function init_hooks() {
    add_filter('send_password_change_email', '__return_false');
  }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.