来源:前阵子合并之前的两个wordpress网站,想用两个用户区分下,建了新用户无法修改密码,只能生成,就想着利用密码重置来更新密码。
问题1:由于博客托管在阿里云弹性web上,在重置密码时,始终提示错误【具体是啥忘了】,就是发不出密码重置邮件。
解决方案:方法涉及修改wordpress代码,升级后需重新修改。
1、打开/wp-includes/class-smtp.php,查找到如下代码【我的wordpress版本在276-283行,其他版本也就在附近】
1 | $this->smtp_conn = @stream_socket_client( |
2、将其修改为如下代码:
1 | $this->smtp_conn = @fsockopen($host,$port,$errno,$errstr,$timeout); |
3、安装WP SMTP插件,配置发件人信息【之前还看到直接在步骤2的基础上改代码的-没生效】——此插件很久没有更新了,有类似的都可以试试。
问题2:解决问题1后,遇上另一个问题,每次重置密码的链接打开后,都会提示无效;
原因:每次密码重置的链接首尾都带有<>。
解决方案:修改wordpress根目录wp-login.php文件
1、打开wp-login.php文件,查找如下代码,在340行左右【不同版本有所差别,上下找下】
1 | $message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . ">\r\n"; |
2、去掉首尾<>,代码如下:
1 | $message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login'); |
完成上面的部分后,终于可以正确的重设密码了。
参考链接: