Dezactivarea notificării prin email după schimbarea parolei
Vreau să dezactivez notificarea prin email dacă un utilizator sau un administrator schimbă parola unui utilizator.
După câteva căutări pe Google, am aflat că trebuie să creez un plugin și să suprascriu funcția wp_password_change_notification găsită în pluggable.php.
Acesta este plugin-ul și funcția:
<?php
/*
Plugin Name: Stop email change password
Description: Whatever
*/
if ( !function_exists( 'wp_password_change_notification' ) ) {
function wp_password_change_notification() {}
}
?>
Am încărcat fișierul în directorul meu de plugin-uri și l-am activat în panoul de administrare!
Acest lucru trebuie făcut cu un plugin deoarece fișierul pluggable.php este încărcat înaintea fișierului functions.php.
Oricum, pentru mine nu pare să funcționeze.
Utilizatorul încă primește email-ul.
Am dezactivat toate plugin-urile și am rulat plugin-ul pe o instalare curată, deci nu există interferențe
Nici WP_DEBUG nu arată erori!
Poate cineva să-mi spună ce să schimb sau cum să rezolv în alt mod (cu excepția modificărilor în core :-) )
M.
Pentru a dezactiva notificarea prin email a utilizatorului, adăugați acest cod într-un plugin sau temă:
add_filter( 'send_password_change_email', '__return_false' );
Pentru informații suplimentare, wp_password_change_notification() controlează notificarea prin email a administratorului când un utilizator își schimbă parola
Pentru a dezactiva Notificarea prin email a Administratorului atunci când un utilizator își resetează propria parolă, creează un Plugin (sau Must Use Plugin) folosind următorul fragment de cod:
/**
* Dezactivează Notificarea Administratorului la Schimbarea Parolei Utilizatorului
*
* @see pluggable.php
*/
if ( ! function_exists( 'wp_password_change_notification' ) ) {
function wp_password_change_notification( $user ) {
return;
}
}
Aceasta va opri trimiterea următorului email către Adresa de Email a Administratorului din Setări > General:
De la: WordPress <wordpress@example.com>
Către: admin@example.com
Subiect: [WordPress] Parolă SchimbatăParola a fost schimbată pentru utilizator: username
Suprimarea acestei notificări prin email trebuie gestionată cu un plugin deoarece pluggable.php este încărcat mai devreme decât fișierul functions.php al temei.
Dacă dorești să dezactivezi Notificarea prin email a Utilizatorului atunci când un utilizator și-a schimbat cu succes propria parolă, folosește următorul filtru plasat în functions.php:
/**
* Dezactivează Notificarea Utilizatorului pentru Confirmarea Schimbării Parolei
*/
add_filter( 'send_password_change_email', '__return_false' );
Aceasta va suprima trimiterea următorului email:
De la: WordPress <wordpress@example.com>
Către: username@example.com
Subiect: [WordPress] Parolă SchimbatăBună username,
Acest mesaj confirmă că parola ta a fost schimbată pe WordPress.
Dacă nu ai schimbat parola, te rugăm să contactezi Administratorul Site-ului la admin@example.com
Acest email a fost trimis către username@example.com
Cu respect,
Echipa WordPress
http://example.com/
Există o mare greșeală în acest răspuns. Numele filtrului este "send_password_change_email" nu "send_email_change_email".
https://codex.wordpress.org/Plugin_API/Filter_Reference/send_password_change_email
Tristan CHARBONNIER
Notat. Pentru referință, cele două filtre sunt înrudite și pot fi utilizate pentru a dezactiva notificarea utilizatorului atunci când un email sau parola este schimbată de utilizator. Cazul de utilizare pentru oricare dintre ele depinde de ce notificare doriți să suprimați - schimbarea emailului sau a parolei. Pentru o imagine clară, consultați funcția WordPress wp_update_user() în wp-includes/user.php: https://core.trac.wordpress.org/browser/tags/4.9.5/src/wp-includes/user.php#L1795
rjb
Dacă utilizați Woocommerce:
Începând cu WC 3.8.0 (noiembrie 2019), există acum un cârlig de filtrare dedicat pentru aceasta:
add_filter('woocommerce_disable_password_change_notification', '__return_true');
Ar trebui să suprima notificările de schimbare a parolei.
acel hook este doar pentru când folosești WooCommerce (WooCommerce 3.8, nu WordPress 3.8)
Rafa
@Rafa Ups, da, am făcut atât de mult dezvoltare WooCommerce + WordPress încât liniile s-au estompat pentru mine. Am ajustat răspunsul meu, mulțumesc.
Mikepote
Atenție că aceasta va dezactiva e-mailul de resetare a parolei pentru utilizatori (vezi /woocommerce/includes/shortcodes/class-wc-shortcode-my-account.php) și ca atare nu este legat de notificările de administrare...
Leander
Acest hook 'woocommerce_disable_password_change_notification' dezactivează într-adevăr notificarea prin email "Parolă schimbată" trimisă administratorului pe site-urile WooCommerce. Puteți observa în /woocommerce/includes/shortcodes/class-wc-shortcode-my-account.php că acesta oprește execuția funcției wp_password_change_notification(), iar această funcție "Notifică administratorul blogului despre schimbarea parolei unui utilizator" WordPress Developer Reference
Abundant Designs
Aceasta funcționează pentru mine, doar golind adresa de email.
// Dezactivează notificarea prin email la schimbarea parolei.
add_filter('wp_password_change_notification_email', function ($wp_password_change_notification_email) {
$wp_password_change_notification_email['to'] = '';
return $wp_password_change_notification_email;
});
Copiază următorul cod și salvează-l ca disable_email.php. Apoi plasează acel fișier în directorul "wp-content/plugins/". Activează-l din Panoul de Administrare.
<?php
/*
Plugin Name: Oprește notificarea de schimbare parolă
Description: Dezactivează trimiterea de email-uri de notificare la schimbarea parolei
*/
if (!function_exists('wp_password_change_notification')) {
function wp_password_change_notification($user) {
return;
}
}
?>
Da, exact asta credeam că am descris. Dar voi actualiza întrebarea dacă nu a fost clar!
Interactive
Încearcă acum. Am actualizat răspunsul. Ar trebui să funcționeze acum!
Sabbir Hasan
WordPress trimite notificarea în mod implicit atunci când utilizatorul este actualizat cu wp_update_user().
Încercarea de a suprascrie acest lucru folosind filtre, modificând pluggable.php sau suprascriind cu o funcție goală, nu funcționează.
În schimb, folosește wp_set_password( $password, $user_id ) atunci când nu dorești ca e-mailul de notificare să fie declanșat pentru utilizatori/administratori la resetarea parolei.
edit: aceasta dezactivează doar notificările administratorului atunci când orice alt utilizator al site-ului își schimbă parola. Este posibil să fi înțeles greșit întrebarea! Scuze =]
Funcția wp_password_change_notification este responsabilă pentru această funcționalitate în WordPress care trimite emailuri administratorilor despre actualizările de schimbare a parolei utilizatorilor (cum au menționat și alte postări).
Ceea ce nu am văzut menționat aici este că în ./wp-includes/default-filters.php aproximativ linia 499 (la momentul scrierii) veți vedea această funcție adăugată la acțiunea after_password_reset.
O soluție rapidă este pur și simplu să o eliminați din lista de acțiuni:
remove_action( 'after_password_reset', 'wp_password_change_notification' );
Puteți cu siguranță rescrie/înlocui wp_password_change_notification, deoarece este una dintre funcțiile din pluggable.php, dar dacă doriți să eliminați această funcționalitate în loc să o actualizați, aceasta ar putea fi o opțiune mai bună.
Voi adăuga că acțiunea after_password_reset este executată după procedura de resetare a parolei (ecranul de autentificare). Trimiterea unei notificări de schimbare a parolei ca urmare a editării profilului poate fi controlată prin filtrul send_password_change_email.
nmr
Hopa! Comentariul tău m-a făcut să realizez că poate am interpretat greșit această întrebare. Căutam o modalitate de a dezactiva notificarea administratorului atunci când orice utilizator al site-ului își schimbă parola. Voi edita pentru a nota asta rapid - mulțumesc @nmr
Rohjay
Alte răspunsuri sunt incorecte deoarece acestea dezactivează trimiterea email-ului atunci când adresa de email este schimbată, nu atunci când parola este schimbată.
Adăugarea codului de mai jos în fișierul functions.php din tema activă (sau alternativ într-un plugin) ar trebui să funcționeze. A funcționat pentru mine în versiunea 4.6.1
/**
* Dezactivează trimiterea email-ului de schimbare a parolei
*/
add_filter( 'send_password_change_email', '__return_false' );
Folosește funcția wp_set_password() în loc de wp_update_user() pentru a actualiza parola, deoarece aceasta nu va declanșa o notificare prin email.