一.链接错误现象
在用WordPress搭建的博客网站,当启用邮件发送功能,新用户注册时,会发送一封设置密码的邮件,给出相应的链接地址,如图 1所示,但当点击打开此链接地址,网页却显示密码重设链接无效,如图 2所示。
图 1 用户注册邮件
图 2 设置密码链接无效提示
二.原因及处理方法
链接失效,经查是链接URL后段的登录名后多加了一个尖括号(>),如果去掉链接中登录名后部的字符串,则可以正确地进入修改密码界面。
由于链接错误,不可能培训用户手工修改链接地址,而用户也陷入无法设置密码、无法注册的死循环。修正的方法有多种,比如用自建或第三方插件的注册界面,如果不想更复杂,可以直接修改源文件。错误的场景有两处,除用户注册外,重置密码也有同样的链接错误,所以需要修改两处源文件。可将网站源文件用FTP下载,修改后再上传覆盖,如果WordPress自动更新,则需注意修改的文件是否再次恢复到错误的状态。
本文以WordPress 4.74版为例,需要修改的两个文件是:
- 根目录下的wp-login.php,此处修改是为修正新用户注册邮件的设置密码链接。
- wp-includes目录下的php,此处修改是修正为重置密码邮件的链接。
wp-login.php文件的修改处是在function retrieve_password 下,具体是第332行,如图 3所示。
图 3 wp-login.php 文件部分
原始代码如下,注意为$message赋值的表达式有前后尖括号(<>),最后还有”\r\n”换行,需将这些全部删除。
$message .= ‘<‘ . network_site_url(“wp-login.php?action=rp&key=$key&login=” . rawurlencode($user_login), ‘login’) . “>\r\n”; |
修改后的代码如下,编辑界面见图 4。
$message .= network_site_url(“wp-login.php?action=rp&key=$key&login=” . rawurlencode($user_login), ‘login’) ; |
图 4 wp-login.php 文件部分(修改后)
wp-includes目录下的pluggable.php修改处是在function wp_new_user_notification下,具体是1807行,原始代码和修改后代码与wp-login.php相同,此处不再重复。
当以上修改完成,点击邮件中的链接地址,打开的网页如图 5所示,此时就可以正确的设置密码。
图 5 设置密码界面