Отключить уведомление по электронной почте после смены пароля

13

Я хочу отключить уведомление по электронной почте, если пользователь или администратор изменяет пароль пользователя.

После некоторого Googleling я пришел к выводу, что мне нужно создать плагин и переписать wp_password_change_notificationфункцию, найденную в pluggable.php.

Это плагин и функция:

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

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

Я загрузил файл в папку с плагинами и активировал его в своей панели администратора!

Это должно быть сделано с помощью плагина, потому что pluggable.phpфайл загружается перед functions.phpфайлом.

Во всяком случае, это не похоже на работу для меня .......

Пользователь по-прежнему получает электронное письмо.

Я набрал все плагины и запустил плагин на чистой установке, так что никаких помех

Также WP_DEBUGне показывает ошибок !!!

Может кто-нибудь сказать мне, что изменить или как это исправить любым другим способом (кроме основных изменений :-))

М.

интерактивный
источник
1
Я также боролся и пытался создать / использовать собственный плагин, установив для WordPress-фильтров значение false, но ничего не получалось ... Просто сегодня я наткнулся на плагин Manage Notification E-mails, и он работает :)
Leander

Ответы:

18

Чтобы отключить уведомление по электронной почте, добавьте это в плагин или тему:

add_filter( 'send_password_change_email', '__return_false' );

FYI wp_password_change_notification()контролирует уведомление по электронной почте администратора, когда пользователь меняет свой пароль

user42826
источник
10

Чтобы отключить уведомление электронной почты администратора, когда пользователь сбрасывает свой собственный пароль , создайте плагин (или должен использовать плагин ), используя следующий фрагмент кода:

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

Это предотвратит отправку следующего электронного письма на электронную почту администратора в меню «Настройки»> «Основные»:

От: WordPress <wordpress@example.com>
Кому: admin@example.com
Тема: [WordPress] Пароль изменен

Пароль изменен для пользователя: имя пользователя

Подавление этого уведомления по электронной почте должно быть обработано с помощью плагина, потому что pluggable.phpзагружается раньше, чем functions.phpфайл темы .


Если вы хотите вместо этого отключить уведомление по электронной почте о том, что пользователь успешно изменил свой пароль , используйте следующий фильтр functions.php:

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

Это подавит отправку следующего электронного письма:

От: WordPress <wordpress@example.com>
Кому: username@example.com
Тема: [WordPress] Пароль изменен

Привет имя пользователя,

Это уведомление подтверждает, что ваш пароль был изменен на WordPress.

Если вы не меняли свой пароль, обратитесь к администратору сайта по адресу admin@example.com.

Это письмо было отправлено на username@example.com

С уважением,
все на WordPress
http://example.com/

rjb
источник
2
В этом ответе есть большая ошибка. Имя фильтра - «send_password_change_email», а не «send_email_change_email». codex.wordpress.org/Plugin_API/Filter_Reference/…
Тристан ШАРБОННЬЕР,
Отметил. Для справки, эти два фильтра связаны и могут использоваться для отключения уведомления пользователя, когда пользователь изменяет электронную почту или пароль. Вариант использования любого из них зависит от того, какое уведомление вы хотите отменить - изменение адреса электронной почты или пароля. Чтобы получить четкую картину, обратитесь к функции WordPress wp_update_user()в wp-includes/user.php: core.trac.wordpress.org/browser/tags/4.9.5/src/wp-include/…
rjb
2

WordPress отправляет уведомление по умолчанию, когда пользователь обновляется wp_update_user().

Попытка перезаписать это с помощью фильтров, модификации pluggable.phpили перезаписи с помощью пустой функции не работает.

Вместо этого используйте, wp_set_password( $password, $user_id )когда вы не хотите, чтобы электронное письмо с уведомлением было запущено для пользователей / администраторов при сбросе пароля.

Майнт-Виллем Гаасбек
источник
1

Скопируйте следующий код и сохраните как disable_email.php. Затем поместите этот файл в каталог «wp-content / plugins /». И активным из панели администратора.

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

if (!function_exists('wp_password_change_notification')) {
    function wp_password_change_notification($user) {
        return;
    }
}
?>
Саббир Хасан
источник
??? Чем это отличается от того, что я сделал?
Интерактивный
Вы сделали плагин и разместили свой код на этом?
Саббир Хасан
Да, это то, что я думал, я описал. Но я уточню вопрос, если не понятно!
Интерактивный
попробуй сейчас. Я обновил ответ. Это должно работать сейчас!
Саббир Хасан
Ха, я только что нашел и попробовал это, но не сработало!
Интерактивный
1

Другие ответы неверны, потому что те отключают отправку электронной почты при изменении электронной почты, а не при изменении пароля.

Добавление приведенного ниже кода в файл functions.php под вашей активной темой (или, альтернативно, в плагине) должно работать. Работал у меня для версии 4.6.1

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

Смотрите официальную документацию

wynnset
источник
Не все остальные ответы могут быть неправильными, и новые ответы публикуются постоянно. Вы должны быть более точными в своем ответе при обращении к «другим» ответам.
Sparky
0

Используйте функцию wp_set_password () вместо wp_update_user () для обновления пароля, поскольку это не вызовет уведомление по электронной почте.

Эндрю Шульц
источник