Dezactivează email-ul de parolă la înregistrare utilizator

21 aug. 2015, 11:15:54
Vizualizări: 17K
Voturi: 13

După cum știm cu toții, WordPress 4.3 a adus un nou sistem de parole. Din păcate, acest nou sistem a eliminat posibilitatea de a NU trimite utilizatorilor noi un email.

Clientul meu folosea un sistem în care le trimitea clienților săi un email personalizat, înregistrând manual adresele lor de email, apoi le trimitea informațiile de autentificare cu un mesaj personalizat. Înțelegem că noul sistem încearcă să fie mai sigur, dar acest lucru nu funcționează pentru nivelul de control pe care el îl dorește.

În căutarea unei soluții pentru a dezactiva aceste email-uri, am găsit următorul cod, dar cred că acesta dezactivează doar notificările pentru schimbarea email-ului la utilizatorii deja înregistrați, nu și la crearea inițială a contului:

// Dezactivează notificările de schimbare a parolei
add_filter( 'send_password_change_email', '__return_false');
// Dezactivează notificările de schimbare a email-ului 
add_filter( 'send_email_change_email', '__return_false');

Știe cineva cum putem dezactiva aceste email-uri inițiale cu parole care sunt trimise după înregistrare?

Mulțumesc.

1
Comentarii

Ai încercat asta? add_filter( 'user_registration_email', '__return_false');

Abhik Abhik
23 aug. 2015 08:06:47
Toate răspunsurile la întrebare 5
1
10

Puteți intercepta acest email înainte de a fi trimis folosind hook-ul phpmailer_init.

Implicit, acest hook se declanșează înainte de trimiterea oricărui email. În funcția de mai jos, $phpmailer va fi o instanță a PHPMailer, și puteți folosi metodele sale pentru a elimina destinatarul implicit și a manipula emailul înainte de trimitere.

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

    # Interceptăm emailul cu username și parolă verificând subiectul
    if( strpos($phpmailer->Subject, 'Your username and password info') ){
        # ștergem lista de destinatari
        $phpmailer->ClearAllRecipients();
        # opțional, trimitem emailul către adresa de admin WordPress
        $phpmailer->AddAddress($admin_email);
    }else{
        # nu a fost interceptat
    }
}
8 dec. 2015 01:25:08
Comentarii

acest lucru funcționează impecabil, mi-a rezolvat complet problema și este perfect și pentru alte utilizări. Mulțumesc pentru un răspuns excelent!

pattyd pattyd
19 feb. 2017 22:33:29
1

De fapt, depinde de modul în care creezi noul utilizator. Dacă o faci din administrare - Utilizatori - Adaugă nou, ai dreptate. În versiunea 4.3, din păcate, nu poți dezactiva trimiterea email-ului de notificare. Dar dacă chiar vrei să creezi un utilizator fără email, există o soluție.

Poți crea un mic plugin unde să creezi manual un cont nou folosind funcția wp_insert_user, care implicit nu trimite niciun email.

Această funcție poate fi apelată astfel.

wp_insert_user( $userdata );

Unde parametrul userdata este un array în care poți transmite toate informațiile necesare.

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

$user_id = wp_insert_user( $userdata ) ;

//La succes
if ( ! is_wp_error( $user_id ) ) {
    echo "Utilizator creat : ". $user_id;
}

Pentru mai multe informații, verifică codex-ul aici.

21 aug. 2015 19:41:51
Comentarii

Deci această funcție este apelată ori de câte ori este creat un nou utilizator, presupun?

Lisa Lisa
23 aug. 2015 07:55:08
1

Funcția wp_new_user_notification este pluggable, deci o poți suprascrie definind-o tu. Poți copia întreaga funcție din wp-includes/pluggable.php în plugin-ul tău (sau în functions.php) și să elimini linia care trimite email-ul.

25 aug. 2015 14:12:06
Comentarii

Nu poți suprascrie wp_new_user_notification în functions.php al temei, deoarece funcțiile pluggable sunt încărcate înaintea temei. Trebuie suprascrisă într-un plugin sau mu-plugin. Citește mai multe: http://wordpress.stackexchange.com/a/55966/56759

fandasson fandasson
16 oct. 2015 16:16:00
0

Pentru a rezolva această problemă în tema ta, creează un nou mu-plugin prin crearea unui fișier nou wp_new_user_notifications.php (numele este la alegerea ta) și plasează-l în folderul wp-content/mu-plugins. Dacă nu există un astfel de folder, creează-l. Asigură-te că plasezi fișierul php direct în folder, nu într-un subfolder.

Apoi continuă cum a sugerat Simon - copiază metoda wp_new_user_notifications.php din wp-includes/pluggable.php în noul tău fișier wp_new_user_notifications.php și modifică-l după necesități.

Pentru a răspunde la întrebarea ta: pentru a dezactiva e-mailurile cu parola inițială, este suficient să elimini ultimul apel al metodei wp_mail.

16 oct. 2015 16:25:02
0
add_filter('send_password_change_email', '__return_false');

Funcționează. Dar este esențial să fie adăugat în pluginul în sine și nu în functions.php al temei.

De exemplu:

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

  public function init_hooks() {
    add_filter('send_password_change_email', '__return_false');
  }
}
30 ian. 2018 16:54:53