WordPress新用戶註冊時提示「您的密碼重設連接無效」

在使用Wordpress密碼找回功能及新用戶註冊郵件中的重置密碼連接時,Wordpress提示「您的密碼重設連接無效,請在下方請求新連接。」、「該key彷佛無效」、「invalid key」。php

這個其實不是wordpress的問題,郵箱收到郵件後,會將密碼重置連接地址及其先後的「<>」一塊兒當成連接地址生成超連接,點擊此超連接後,因爲傳給wordpress的參數不對(多了個>),例如把鼠標移到下圖的紅色框的鏈接上,並看到瀏覽器左下角的URL提示鏈接,會發現多了一個「>」,因此wordpress提示密碼重設連接無效。html

  此問題主要影響忘記密碼時的找回密碼功能及新用戶註冊時,系統給新用戶發送的密碼設置功能。可經過如下兩個步驟解決此問題:瀏覽器

 

  • 解決找回密碼時提示「您的密碼重設連接無效」:

  打開WP根目錄下的 wp-login.php,找到以下代碼(374行左右):wordpress

$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";

  即去掉兩個尖括號便可。url

 

  • 解決新用戶註冊時,點擊郵件中的重置密碼連接提示「您的密碼重設連接無效」:

   打開WP安裝目錄下的/wp-includes/pluggable.php,找到以下代碼(1741行左右):spa

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

  修改成:code

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

  以上修改後,用戶收到的密碼重置及新用戶收到的密碼設置郵件將不會再包含「<>」,用戶再郵箱中點擊連接後便可正常重置或者設置密碼。以上修改涉及到Wordpress源代碼的修改,每次升級Wordpress後修改會被覆蓋,必須從新進行以上修改。htm

  另外一種解決方式:把下面的代碼加入當前主題的functions.php裏面就能夠了。blog

複製代碼
/**
* 修復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文件中。get

 

原文連接:https://www.cnblogs.com/liudecai/p/6474611.html

相關文章
相關標籤/搜索