如果我們使用前臺自定義的登錄頁面,一般都不希望用戶登錄失敗(賬號密碼錯誤)後跳轉到WP後臺默認的登錄表單,那就需要做一個重定向,讓用戶登錄失敗後重定向到我們自定義的頁面。
將下面的代碼添加到主題的 functions.php 即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/** * WordPress 用戶登錄失敗重定向到自定義頁面 * https://www.wpdaxue.com/redirect-wordpress-failed-logins.html */ add_action('wp_login_failed', 'my_front_end_login_fail'); function my_front_end_login_fail($username){ // 獲取提交數據的來源頁面 $referrer = $_SERVER['HTTP_REFERER']; // 如果是一個有效的來源,並且不是默認登錄頁面或後臺管理頁面 if(!empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin')){ // 追加一些信息(login=failed)到鏈接中,讓主題使用 wp_redirect($referrer . '?login=failed'); exit; } } |
/**
* WordPress 用戶登錄失敗重定向到自定義頁面
* https://www.wpdaxue.com/redirect-wordpress-failed-logins.html
*/
add_action(‘wp_login_failed’, ‘my_front_end_login_fail’);
function my_front_end_login_fail($username){
// 獲取提交數據的來源頁面
$referrer = $_SERVER[‘HTTP_REFERER’];
// 如果是一個有效的來源,並且不是默認登錄頁面或後臺管理頁面
if(!empty($referrer) && !strstr($referrer,’wp-login’) && !strstr($referrer,’wp-admin’)){
// 追加一些信息(login=failed)到鏈接中,讓主題使用
wp_redirect($referrer . ‘?login=failed’);
exit;
}
}
假設你的自定義登錄頁面地址為 http://你的域名/login,上面的第 8 行就會獲取到這個頁面鏈接,然後登錄失敗後,按照第 12 行的設置,就會返回 http://你的域名/login?login=failed 這個鏈接。你可以通過修改12行 wp_redirect() 這個函數的參數跳轉到任何你想要的地址。