如何修改WordPress Multisite的丢失密码邮件内容?
WordPress Multisite 修改找回密码邮件文本可行方案
方案1:使用官方专属过滤器钩子(全局生效)
绝大多数修改失效的核心原因是误用了单站点的retrieve_password_message钩子,该钩子在多站点模式下不会触发,必须使用多站点专属的retrieve_password_notification_email钩子。
建议将代码放在wp-content/mu-plugins目录下新建的自定义php文件中(比如命名为custom-password-email.php),该目录的代码会优先加载,不受主题切换、插件启用状态影响,可全局对所有子站点生效。
参考代码如下:
<?php // 优先级设为999,确保晚于其他插件/主题的同钩子代码执行,覆盖已有修改 add_filter( 'retrieve_password_notification_email', 'custom_multisite_lost_password_email', 999, 4 ); function custom_multisite_lost_password_email( $email, $key, $user_login, $user_data ) { // 自定义邮件标题 $email['subject'] = '您的站点密码重置申请'; // 自定义邮件内容,可按需拼接用户名、重置链接等变量 $email['message'] = '您好 ' . $user_data->display_name . ': 您刚刚提交了密码重置申请,请点击以下链接重置密码: ' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . ' 如果您没有提交此申请,请忽略本邮件。 此致 站点管理团队'; // 如需自定义发件人可取消注释下行修改 // $email['headers'] = 'From: 你的站点名称 <admin@yourdomain.com>' . "\r\n"; return $email; }
如果仅需要修改单个子站点的邮件内容,也可以将代码放入对应子站点已启用主题的functions.php文件中,仅对当前子站点生效。
常见失效问题排查
- 如果你安装了SMTP插件、邮件自定义类插件,请先进入插件设置页,查找是否有「找回密码邮件模板」相关配置项,插件内的配置优先级高于自定义代码
- 调整钩子优先级:如果仍不生效,可将上述代码中钩子的第三个参数
999调高到更大的数值,确保你的代码最后执行覆盖其他修改 - 测试时请使用前台找回密码入口操作,不要使用后台用户管理页的「发送密码重置邮件」按钮,部分版本下后台操作会跳过上述钩子
内容的提问来源于stack exchange,提问作者Sajidul Islam
相关产品推荐
相关产品推荐

