完美解決wordpress郵件鏈接無效的問題


教程介紹:解決wordpress新用戶注冊郵件鏈接無效以及重新設置密碼鏈接無效的問題

解決流程

案例一、用戶注冊

當用戶注冊站點時,用戶會收到如下注冊信:

這里寫圖片描述

當用戶點擊鏈接時,卻發現鏈接無效:

這里寫圖片描述

仔細觀察設置密碼的鏈接,會發現郵箱發送的鏈接地址后面多了個”>”號,本來是WordPress為了美觀,前后加上了尖括號,結果適得其反,被郵箱解析到地址里面去了,點擊后自然會是無效的了。

解決辦法

方法一

解決的方法很簡單,把下面的代碼加入當前主題的functions.php里面就可以了。

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根目錄下wp-login.php文件可以解決這個問題。

找到如下代碼(大約在第330行):

$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”去掉,但是這種方法在升級Wordpress后會失效,因為升級后wp-login.php會被替換,需要重新修改wp-login.php,所以推薦使用第一種方法。

修改后即用戶可正常設置密碼:

這里寫圖片描述

案例二、用戶修改、重置密碼

當用戶點擊忘記密碼選擇重新修改密碼時,用戶會收到如下信件:

這里寫圖片描述

發現還是上面的情況類似,修改密碼鏈接地址后面多了個”>”號。

解決辦法

下載站點中wp-includes文件夾中的pluggable.php文件並打開 
找到如下語句:

$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->user_login), 'login') . "\r\n\r\n";

用戶即可收到正常鏈接重置密碼的郵件:

這里寫圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM