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;key=$key&amp;amp;login=" . rawurlencode($user-&amp;gt;user_login), 'login'). ">\r\n\r\n";
修改为:
$message .= network_site_url("wp-login.php?action=rp&amp;amp;key=$key&amp;amp;login=" . rawurlencode($user-&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-&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;key=$key&amp;login=" . rawurlencode($user_login), 'login') ; return $msg; } add_filter('retrieve_password_message', reset_password_message, null, 2);&lt;/pre&gt;
至此,便解决了,修改密码或者注册时设密码的邮件连接的正常。