WordPress 用戶登錄失敗(賬號或密碼錯誤)重定向到自定義頁面

如果我們使用前臺自定義的登錄頁面,一般都不希望用戶登錄失敗(賬號密碼錯誤)後跳轉到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() 這個函數的參數跳轉到任何你想要的地址。

發佈留言