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

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

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 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.

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...

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

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!

Încearcă acum. Am actualizat răspunsul. Ar trebui să funcționeze acum!

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.

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

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.
