wordpress注册重置密码连接失效解决方案4.6版本

当我们新建一个wordpress站点之后,别人想要来注册会员的时候,这个时候,有一个bug那就是发送的邮件连接无效。

链接无效

连接无效图片点击连接 如右图所示:→

这是因为,wordpress在发送邮件的时候为了连接美观在连接的前后添加了'<>’导致邮件中八折2个符号当成了地址的一部分来解析,自然这是无效的。如图所示。

解决的办法是什么呢?当然有,这里要注意一下,有2种情况,一种是你在注册的时候,获取密码连接显示连接失效,当然我也看了许多网上的教程。在本版,经过本人的亲身经历,得到了应该修改2个文件。它们分别是主题文件夹下的functions.php和/wp-includes/pluggable.php。它们分别要修改的地方有如下所示:


在这个文件/wp-includes/pluggable.php大概1750行的位置将

$message .="<". network_site_url("wp-login.php?action=rp&amp;amp;amp;key=$key&amp;amp;amp;login=" . 
rawurlencode($user-&amp;amp;gt;user_login), 'login'). ">\r\n\r\n";

修改为:

$message .= network_site_url("wp-login.php?action=rp&amp;amp;amp;key=$key&amp;amp;amp;login=" . 
rawurlencode($user-&amp;amp;gt;user_login), 'login'). "\r\n\r\n";

在主题文件夹下添加如下代码:

//邮件问题
function reset_password_message( $message, $key ) { 
 if ( strpos($_POST['user_login'], '@') ) { 
 $user_data = get_user_by('email', trim($_POST['user_login'])); 
 } else { 
 $login = trim($_POST['user_login']); 
 $user_data = get_user_by('login', $login); 
 } 
 $user_login = $user_data-&amp;gt;user_login; 
 $msg = __('有人要求重设如下帐号的密码:'). "\r\n\r\n"; 
 $msg .= network_site_url() . "\r\n\r\n"; 
 $msg .= sprintf(__('用户名:%s'), $user_login) . "\r\n\r\n"; 
 $msg .= __('若这不是您本人要求的,请忽略本邮件。') . "\r\n\r\n"; 
 $msg .= __('要重置您的密码,请打开下面的链接:'). "\r\n\r\n"; 
 $msg .= network_site_url("wp-login.php?action=rp&amp;amp;key=$key&amp;amp;login=" . rawurlencode($user_login), 'login') ; 
 return $msg; 
} 
add_filter('retrieve_password_message', reset_password_message, null, 2);&amp;lt;/pre&amp;gt;

至此,便解决了,修改密码或者注册时设密码的邮件连接的正常。

发表评论

电子邮件地址不会被公开。 必填项已用*标注