Wyłącz powiadomienia e-mail po zmianie hasła

14

Chcę wyłączyć powiadomienie e-mail, jeśli użytkownik lub administrator zmieni hasło użytkownika.

Po pewnym Googlelingu odkryłem, że muszę utworzyć wtyczkę i zastąpić wp_password_change_notificationfunkcję znalezioną w pluggable.php.

To jest wtyczka i funkcja:

<?php
/*
Plugin Name: Stop email change password
Description: Whatever
*/

if ( !function_exists( 'wp_password_change_notification' ) ) {
    function wp_password_change_notification() {}
}
?>

Przesłałem plik do folderu wtyczek i aktywowałem go w panelu administracyjnym!

Należy to zrobić za pomocą wtyczki, ponieważ pluggable.phpplik jest ładowany przed functions.phpplikiem.

W każdym razie wydaje mi się, że to nie działa .......

Użytkownik nadal otrzymuje wiadomość e-mail.

Poddałem wszystkie wtyczki i uruchomiłem wtyczkę na czystej instalacji, aby nie było zakłóceń

WP_DEBUGNie pokazuje żadnych błędów, jak również !!!

Czy ktoś może mi powiedzieć, co zmienić lub jak to naprawić w inny sposób (oprócz modyfikacji rdzenia :-))

M.

Interaktywny
źródło
1
Walczyłem również i próbowałem utworzyć / użyć niestandardowej wtyczki, ustawiając filtry WordPress na wartość false, ale nic nie działało ... Właśnie dzisiaj natknąłem się na wtyczkę Manage Notification E-mail i działa :)
Leander

Odpowiedzi:

20

Aby wyłączyć powiadomienia e-mail użytkownika, dodaj to do wtyczki lub motywu:

add_filter( 'send_password_change_email', '__return_false' );

FYI wp_password_change_notification()kontroluje powiadomienia e-mail administratora, gdy użytkownik zmieni swoje hasło

użytkownik42826
źródło
11

Aby wyłączyć powiadomienie e-mail administratora, gdy użytkownik zresetuje własne hasło , utwórz wtyczkę (lub wtyczkę, której trzeba użyć ), używając następującego fragmentu kodu:

/**
 * Disable Admin Notification of User Password Change
 *
 * @see pluggable.php
 */
if ( ! function_exists( 'wp_password_change_notification' ) ) {
    function wp_password_change_notification( $user ) {
        return;
    }
}

Dzięki temu następujący e-mail nie zostanie wysłany na adres e-mail administratora w Ustawieniach> Ogólne:

Od: WordPress <[email protected]>
Do: [email protected]
Temat: [WordPress] Hasło zmienione

Hasło zostało zmienione dla użytkownika: nazwa użytkownika

Ukrywanie tego powiadomienia e-mail musi być obsługiwane przez wtyczkę, ponieważ pluggable.phpjest ładowana wcześniej niż plik motywu functions.php.


Jeśli zamiast tego chcesz wyłączyć powiadomienie e-mail użytkownika, że użytkownik pomyślnie zmienił swoje hasło , użyj następującego filtru umieszczonego w functions.php:

/**
 * Disable User Notification of Password Change Confirmation
 */
add_filter( 'send_password_change_email', '__return_false' );

Pomoże to w wysłaniu następującego e-maila:

Od: WordPress <[email protected]>
Do: nazwa uż[email protected]
Temat: [WordPress] Hasło zmienione

Cześć nazwa użytkownika,

Ta informacja potwierdza, że ​​twoje hasło zostało zmienione w WordPress.

Jeśli nie zmieniłeś hasła, skontaktuj się z administratorem witryny pod adresem [email protected]

Ten e-mail został wysłany na nazwę uż[email protected]

Pozdrawiam,
wszystko na WordPress
http://example.com/

rjb
źródło
2
W tej odpowiedzi jest duży błąd. Nazwa filtra to „send_password_change_email”, a nie „send_email_change_email”. codex.wordpress.org/Plugin_API/Filter_Reference/…
Tristan CHARBONNIER
Odnotowany. Dla porównania dwa filtry są powiązane i mogą być użyte do wyłączenia powiadomienia użytkownika, gdy użytkownik zmieni adres e-mail lub hasło. Przypadek użycia albo zależy od tego, które powiadomienie chcesz pominąć - zmiana adresu e-mail lub zmiana hasła. Aby uzyskać wyraźny obraz, zapoznaj się z funkcją WordPress wp_update_user()w wp-includes/user.php: core.trac.wordpress.org/browser/tags/4.9.5/src/wp-includes/…
rjb
2

WordPress domyślnie wysyła powiadomienie, gdy użytkownik jest aktualizowany za pomocą wp_update_user().

Próba zastąpienia tego przy użyciu filtrów, modyfikacji pluggable.phplub zastąpienia pustą funkcją nie działa.

Zamiast tego użyj, wp_set_password( $password, $user_id )jeśli nie chcesz, aby e-mail z powiadomieniem był uruchamiany dla użytkowników / administratorów po zresetowaniu hasła.

Meint-Willem Gaasbeek
źródło
1

Skopiuj poniższy kod i zapisz jako disable_email.php. Następnie umieść ten plik w katalogu „wp-content / plugins /”. I aktywny z panelu administracyjnego.

<?php
/*
Plugin Name: Stop email change password
Description: Whatever
*/

if (!function_exists('wp_password_change_notification')) {
    function wp_password_change_notification($user) {
        return;
    }
}
?>
Sabbir Hasan
źródło
??? Czym to się różni od tego, co zrobiłem?
Interaktywny
Czy stworzyłeś wtyczkę i umieściłeś na niej swój kod?
Sabbir Hasan
Tak, tak myślałem, że opisałem. Ale zaktualizuję pytanie, jeśli nie było jasne!
Interaktywny
Spróbuj teraz. Zaktualizowałem odpowiedź. Powinno już działać!
Sabbir Hasan
Ha Właśnie to znalazłem i spróbowałem, ale nie zadziałało!
Interaktywny
1

Inne odpowiedzi są błędne, ponieważ wyłączają wysyłanie wiadomości e-mail po zmianie wiadomości e-mail, a nie po zmianie hasła.

Dodanie poniższego kodu do pliku functions.php pod aktywnym motywem (lub alternatywnie we wtyczce) powinno działać. Pracował dla mnie dla wersji 4.6.1

/**
 * Disable sending of the password change email
 */
add_filter( 'send_password_change_email', '__return_false' );

Zobacz oficjalną dokumentację

wynnset
źródło
Nie wszystkie inne odpowiedzi mogą być błędne, a nowe odpowiedzi są cały czas publikowane. Powinieneś być bardziej szczegółowy w swojej odpowiedzi, odnosząc się do „innych” odpowiedzi.
Sparky,
0

Użyj funkcji wp_set_password () zamiast wp_update_user (), aby zaktualizować hasło, ponieważ nie spowoduje to wysłania powiadomienia e-mail.

Andrew Schultz
źródło