如果用户或管理员更改了用户密码,我想禁用电子邮件通知。
经过一番谷歌搜索后,我发现我需要创建一个插件并覆盖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也没有显示任何错误!
谁能告诉我要更改什么或如何以其他方式解决它(除了核心修改:-))
M.

评论

我还苦苦尝试并尝试创建/使用自定义插件,将WordPress过滤器设置为false,但无济于事...就在今天,我偶然发现了Manage Notification E-mails插件,它起作用了:)

#1 楼

要禁用用户电子邮件通知,请将其添加到插件或主题中:

add_filter( 'send_password_change_email', '__return_false' );


FYI wp_password_change_notification()控制用户更改密码时的管理员电子邮件通知

#2 楼

要在用户重置自己的密码时禁用管理员电子邮件通知,请使用以下代码段创建插件(或必须使用插件):

/**
 * 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 收件人: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 收件人:username@example.com主题:[WordPress]密码更改了

您好用户名,

此通知确认您的密码已在WordPress上更改。

如果您未更改密码,请通过admin @与网站管理员联系。 example.com

这封电子邮件已经发送到username@example.com

问候,
全部在WordPresshttp://example.com/


评论


这个答案有一个大错误。过滤器名称是“ send_password_change_email”,而不是“ send_email_change_email”。 codex.wordpress.org/Plugin_API/Filter_Reference/…

– Tristan CHARBONNIER
18-4-6在8:29



注意。作为参考,这两个过滤器是相关的,可用于在用户更改电子邮件或密码时禁用用户通知。两者的用例取决于您要禁止显示的通知-更改电子邮件或更改密码。要获得清晰的图片,请参阅wp-includes / user.php中的WordPress函数wp_update_user():core.trac.wordpress.org/browser/tags/4.9.5/src/wp-includes/…

–rjb
18-4-6在16:15



#3 楼

复制以下代码,并另存为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;
    }
}
?>


评论


???这和我做的有什么不同?

–交互式
15-10-23在8:57

您是否制作了插件并在上面放置了代码?

– Sabbir Hasan
15年10月23日在9:05

是的,这就是我所描述的。但如果不清楚,我将更新问题!

–交互式
2015年10月23日在9:09

现在试试。我更新了答案。现在应该可以工作了!

– Sabbir Hasan
15年10月23日在9:13

哈,我刚刚找到并尝试了此方法,但没有成功!

–交互式
15年10月23日在9:15

#4 楼

默认情况下,当用户使用wp_update_user()更新时,WordPress会发送通知。

尝试使用过滤器覆盖,修改pluggable.php或使用空函数覆盖均不起作用。

当您不希望收到通知时,请改用wp_set_password( $password, $user_id ) -mail将在密码重置后为用户/管理员触发。

#5 楼

其他答案是错误的,因为这些更改会在更改电子邮件时(而不是更改密码时)禁止发送电子邮件。

将下面的代码添加到活动主题下(或在插件中)的functions.php文件中应该可以。为我工作的版本4.6.1

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


请参阅官方文档

评论


并非所有其他答案都可能是错误的,并且新答案始终会发布。当提及“其他”答案时,您应该在答案中更具体。

–闪闪发光
19/12/10在20:01

#6 楼

如果您使用的是Woocommerce:

自WC 3.8.0起(2019年11月),现在有一个专用的过滤器钩子用于此:

add_filter('woocommerce_disable_password_change_notification', '__return_true');


应禁止密码更改通知。

评论


该挂钩仅适用于使用woocommerce时(woocommerce 3.8,而不是wordpress 3.8)

–拉法
20年5月13日在9:22



@Rafa Oops,是的,我一直在进行大量的WC + WP开发,以至于我的台词变得模糊了。我已经调整了答案,谢谢。

–迈克波特
20-05-14在12:25

#7 楼

使用函数wp_set_password()而不是wp_update_user()来更新密码,因为这不会触发电子邮件通知。

#8 楼

这个答案https://wordpress.stackexchange.com/a/266006/73347是否仍然可以禁用向管理员发送密码重置电子邮件的功能?
/**
 * Disable Admin Notification of User Password Change
 *
 * @see pluggable.php
 */
if ( ! function_exists( 'wp_password_change_notification' ) ) {
    function wp_password_change_notification( $user ) {
        return;
    }
}

我仍然收到它们:(
谢谢。