Вимкнути сповіщення електронною поштою після зміни пароля


14

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

Після деякого 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-mail і він працює :)
Leander

Відповіді:


20

Щоб вимкнути сповіщення електронною поштою користувача, додайте це у плагін або тему:

add_filter( 'send_password_change_email', '__return_false' );

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


11

Щоб вимкнути сповіщення електронною поштою адміністратора, коли користувач скидає свій власний пароль , створіть плагін (або повинен використовувати плагін ), використовуючи такий фрагмент коду:

/**
 * 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

Цей електронний лист надіслано на ім’я користувача@example.com

З повагою,
все на WordPress
http://example.com/


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-includes/…
rjb

2

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

Спроба перезаписати це за допомогою фільтрів, зміни pluggable.phpабо перезапису порожньої функції не працює.

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


1

Скопіюйте цей наступний код і збережіть як invalid_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

Інші відповіді невірні, оскільки вони відключають надсилання електронної пошти, коли електронну пошту змінено, а не при зміні пароля.

Додавання коду нижче у файл function.php під вашою активною темою (або в плагіні) має працювати. Для мене працювала версія 4.6.1

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

Дивіться офіційну документацію


Не всі інші відповіді можуть бути помилковими, і нові відповіді публікуються постійно. Ви повинні бути більш конкретними у своїй відповіді, коли посилаєтесь на "інші" відповіді.
Спаркі

0

Використовуйте функцію wp_set_password () замість wp_update_user () для оновлення пароля, оскільки це не спричинить сповіщення електронною поштою.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.