修復 WordPress 找回密碼提示“抱歉,該key似乎無效”

本文目錄1方法一(推薦)2方法二

一直都有朋友反饋,WordPress大學找回密碼提示“抱歉,該key似乎無效”:

password-wpdaxue_com

問題出在瞭郵件的驗證鏈接多出瞭一個 >:

0504-wpdaxue_com

解決的方法有兩種:

方法一(推薦)

在當前主題的 functions.php 添加下面的代碼即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
 * 修復 WordPress 找回密碼提示“抱歉,該key似乎無效”
 * https://www.wpdaxue.com/lost-password-error-invalidkey.html
 */
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);

/**
* 修復 WordPress 找回密碼提示“抱歉,該key似乎無效”
* https://www.wpdaxue.com/lost-password-error-invalidkey.html
*/
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);

推薦使用上面方法,因為即使你更新瞭 WP的版本,也不會影響你添加的代碼。

方法二

打開WP根目錄下的 wp-login.php,找到如下代碼(WP3.8 位於 364 行):

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

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

修改為:

1
$message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') ;

$message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), ‘login’) ;

即可。

個人不推薦這個方法,因為每次更新WordPress以後都需要重新修改!

發佈留言