WordPress 用户修改密码后,禁止邮件通知管理员

默认情况下,当站点的普通用户修改密码后,也会给管理员发送一封通知邮件。这在绝大部分情况下都是完全没必要的。因此我们可以移除这个操作。通过查看 WordPress  函数 reset_password 的源码,我们可以发现,这里有一个 action:

do_action( 'after_password_reset', $user, $new_pass );

使用 VScode 的全局搜索,我们找到了 WordPress 的默认 add_action:


add_action( 'after_password_reset', 'wp_password_change_notification' );

查看函数:wp_password_change_notification 确认该函数是发邮件通知管理员,而非用户。此处需要抱怨一下,这个函数名称和它的实际用途有些不匹配,看上去像是通知用户,实则是通知管理员。所以最终的解决方案也就很简单了。在主题functions中,添加:

// 用户修改密码,禁止通知管理员
remove_action('after_password_reset', 'wp_password_change_notification');

以上这个过程实际就是我们在缺少准确文档的情况下,如何自定义 WordPress 的常用方法。即,首先确认操作相关的 wp 原生函数或类。直接查看源码,查看是否有合适的Hook 可以添加或移除。通常,这一步就已经解决了绝大部分关于自定义修改的相关问题。不到万不得已,不要直接修改源码程序,首先可能会引发一系列不可预知的后果。其次,每次程序升级还得重复操作。