如何让WordPress后台使用Ultimate Member模板发送重置密码邮件?
解决WordPress后台发送重置密码邮件调用Ultimate Members模板的问题
要让WordPress后台用户页面发送重置密码邮件时使用Ultimate Members(UM)的模板并修复404链接问题,可以通过以下PHP代码实现:
实现步骤
1. 禁用WordPress默认重置密码邮件
首先拦截WordPress原生的重置密码邮件发送逻辑:
add_filter( 'wp_password_change_notification', '__return_false' );
2. 替换为UM模板发送并修正链接
添加自定义函数,调用UM的邮件模板生成逻辑,同时生成正确的重置链接:
add_action( 'send_password_reset_email', 'um_custom_admin_reset_password_email', 10, 4 ); function um_custom_admin_reset_password_email( $user, $reset_key, $user_login, $user_email ) { // 检查UM插件是否激活 if ( ! class_exists( 'UM' ) ) { return; } // 生成UM密码重置页面的正确链接(需确保UM已配置该页面) $reset_link = um_get_page_link( 'password-reset', 'slug' ) . '?reset_key=' . $reset_key . '&user_id=' . $user->ID; // 获取UM预设的密码重置邮件模板 $mail_template = UM()->mail()->get_template( 'password_reset' ); // 替换模板中的变量 $mail_subject = str_replace( '{username}', $user_login, $mail_template['subject'] ); $mail_message = str_replace( [ '{username}', '{reset_link}' ], [ $user_login, $reset_link ], $mail_template['message'] ); // 使用UM的发件人配置设置邮件头 $headers = array( 'Content-Type: text/html; charset=UTF-8', 'From: ' . UM()->options()->get( 'email_from' ) . ' <' . UM()->options()->get( 'email_from_address' ) . '>' ); // 发送邮件 wp_mail( $user_email, $mail_subject, $mail_message, $headers ); }
注意事项
- 将代码添加到当前主题的
functions.php文件,或创建独立的自定义插件(推荐后者,避免主题更新丢失代码) - 确保已在UM插件设置的「页面」选项中正确配置了「密码重置」页面
- 测试邮件发送,确认重置链接可正常访问且模板样式与UM前台发送的一致
内容的提问来源于stack exchange,提问作者XanderMan
相关产品推荐
相关产品推荐

