Dezactivarea notificării prin email după schimbarea parolei

23 oct. 2015, 11:42:43
Vizualizări: 60.8K
Voturi: 24

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.

1
Comentarii

Am încercat și eu să creez/să folosesc un plugin personalizat, să setez filtrele WordPress pe false, dar nimic nu a funcționat... Astăzi am dat peste pluginul Manage Notification E-mails și funcționează :)

Leander Leander
26 feb. 2016 11:40:14
Toate răspunsurile la întrebare 9
0
37

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

23 oct. 2015 22:58:04
3
33

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/

5 mai 2017 21:03:59
Comentarii

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 Tristan CHARBONNIER
6 apr. 2018 11:29:40

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 rjb
6 apr. 2018 19:15:04

Salut, de ce ar rula această funcție wp_password_change_notification când există deja o funcție cu același nume?

danny danny
13 mar. 2023 22:05:02
4

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.

22 apr. 2020 14:00:50
Comentarii

acel hook este doar pentru când folosești WooCommerce (WooCommerce 3.8, nu WordPress 3.8)

Rafa Rafa
13 mai 2020 12:22:59

@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 Mikepote
14 mai 2020 15:25:42

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 Leander
4 oct. 2022 21:35:53

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 Abundant Designs
10 mar. 2023 20:12:07
1

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;
});
10 feb. 2022 17:35:23
Comentarii

Aceasta este cea mai bună metodă de a face asta acum. Când a fost pusă întrebarea inițial, funcția wp_password_change_notification_email nu exista (a fost adăugată în WP 4.9).

butlerblog butlerblog
29 mar. 2022 19:21:41
6

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;
    }
}
?>
23 oct. 2015 11:51:06
Comentarii

??? Cum e diferit de ce am făcut eu?

Interactive Interactive
23 oct. 2015 11:57:28

Ai creat un plugin și ai pus codul acolo?

Sabbir Hasan Sabbir Hasan
23 oct. 2015 12:05:48

Da, exact asta credeam că am descris. Dar voi actualiza întrebarea dacă nu a fost clar!

Interactive Interactive
23 oct. 2015 12:09:20

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

Sabbir Hasan Sabbir Hasan
23 oct. 2015 12:13:18

Ha, tocmai am găsit și am încercat asta dar nu a funcționat!

Interactive Interactive
23 oct. 2015 12:15:59

@Interactive Trebuie să activezi mai întâi plugin-ul. La mine a funcționat.

Max S. Max S.
9 dec. 2019 01:46:25
Arată celelalte 1 comentarii
0

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.

23 feb. 2016 13:55:11
2

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

1 mar. 2023 19:15:08
Comentarii

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 nmr
4 mar. 2023 13:16:41

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 Rohjay
7 mar. 2023 21:03:26
1

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

Vezi documentația oficială

14 iun. 2017 07:43:59
Comentarii

Nu toate celelalte răspunsuri ar putea fi greșite și noi răspunsuri sunt postate în permanență. Ar trebui să fii mai specific în răspunsul tău atunci când te referi la răspunsurile "alte".

Sparky Sparky
10 dec. 2019 22:01:10
0

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.

17 dec. 2017 10:01:52