• 首页
  • >
  • 解决WP激活邮件链接无效的问题
  • >
  • 正文

解决WP激活邮件链接无效的问题

60次阅读

经我测试了一下,又出现了一个问题:发送的激活邮件链接无效,如下图(会多出一个 < ):

点击这上链接后,会进入如下图的界面:

提示“你的密码重设链接无效”。经百度后,才了解这是wordpress的一个小bug,需要修改一下wordpress程序的wp-includes文件夹中的pluggable.php文件的一句代码(大概1899行如下图),把代码中的 < 和 > 去掉:

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

改为:

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

这时候,新用户注册成功后,点击邮件中的链接会跳到重置密码页面,如下图:

到这里,我们wordpress网站开放注册才算是全部结束。注册成功后,wordpress会发送一个随机密码给新注册用户,在上图中的输入框中显示,新用户可以在上图这个页面重新设置自己的密码。

另一种解决方式:把下面的代码加入当前主题的functions.php里面就可以了。

/**
* 修复WordPress找回密码提示“抱歉,该key似乎无效”问题
*/
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->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&key=$key&login=" . rawurlencode($user_login), 'login') ;
    return $msg;
}
add_filter('retrieve_password_message', reset_password_message, null, 2);

这种办法的缺点是,每次换主题都要重新把代码添加到主题的function.php文件中。

作者:管理员  修订  2019/09/19 18:48:10

WP爱好者专注WordPress在线系统培训,10年来超过十万学员在此获得技术提升和人脉圈子。

WordPress课程已融入到移动搜索、零基础建站、WP爱好者开源主题模板、SEM入门等。

欢迎添加助教微信:tc199361,马上获得优秀学员案例。