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.


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


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 <wordpress@example.com>
Do: admin@example.com
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 <wordpress@example.com>
Do: nazwa użytkownika@example.com
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 admin@example.com

Ten e-mail został wysłany na nazwę użytkownika@example.com

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


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.


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;
    }
}
?>

??? 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ę


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,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.