昨天,陌小雨心血来潮,试了一下 WordPress 支持中文用户注册的代码,因为最初没有添加 smtp 发信的代码,所以没有获取到用户密码,只好通过重置密码来获取,可是重置了几遍,发现 WordPress4.5.3 重置密码有 bug,重置密码的邮件是收到了:
点开邮件,里面有一个重置链接:
点击这个链接后,出现提示:您的密码重设链接无效,请在下方请求新链接。
如此反复,根本是一个死循环嘛。
陌小雨发现重置密码中的链接有问题,首尾被<>包裹住了,经过分析,发现可以通过修改 WordPress 根目录下 wp-login.php 文件解决这个问题。
具体修改方法是把 wp-login.php 中搜索$message .即可定位需要修改的位置:将
$message .= '<' . network_site_url("wp-login.phpaction=rp&key=$key&login=" . rawurlencode($user_login), 'login') . ">\r\n";
修改为:
$message .= network_site_url("wp-login.phpaction=rp&key=$key&login=" . rawurlencode($user_login), 'login');
这个时候再使用忘记密码功能,就会发现重置密码邮件中的链接已经正常了:
点击这个链接,就可以重新设置密码了:
之前看到有人说 dux 主题的重置密码失效,不知道是不是这个原因,这个是 WordPress 的问题,与主题无关,dux 也蛮冤的哈!