2016-11-26 29 views
-1

現在我知道,如果我想在用戶重定向記錄到當前網頁,他們已經在我應該使用此過濾器如何有條件地重定向登錄用戶?

function pro_redirect_to_request($redirect_to, $request, $user){ 
// instead of using $redirect_to we're redirecting back to $request 
return $request; 
} 
add_filter('login_redirect', 'pro_redirect_to_request', 10, 3); 

,但現在我有我想重定向誰是用戶自定義登錄頁面從這個頁面登錄到一個自定義頁面,我的意思是說,該主頁。所以我做了這些編輯過濾器,但它不起作用。

function pro_redirect_to_request($redirect_to, $request, $user){ 
// instead of using $redirect_to we're redirecting back to $request 
if ($request == 'http://prosentra.com/login'){ 
    wp_redirect(home_url("")); 
    exit(); 
}else{ 
return $request; 
} 
} 
add_filter('login_redirect', 'pro_redirect_to_request', 10, 3); 

這裏我要問,如果用戶請求從登錄頁面等於該網址「http://prosentra.com/login」然後重定向我的主頁,如果不是我重定向到當前頁面。 我應該做些什麼修改?

回答

1

爲什麼不使用HTTP_REFERER?檢查用戶是否來自您的自定義登錄頁面。

所以我只是用Wordpress測試了一下,它的工作原理。

function pro_redirect_to_request($redirect_to, $request, $user){ 

$prev_url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; 

$request_url = "Your custom URL after login"; 
$default_url = "Your default URL"; 

if($prev_url == "http://prosentra.com/login/"){ 
    $redirect_to = $request_url; 
} else { 
    $redirect_to = $default_url; 
} 

return $redirect_to; 

} 
add_filter('login_redirect', 'pro_redirect_to_request', 10, 3); 

我用Woocommerce測試了它,它工作的也很好。

function wc_custom_user_redirect($redirect_to, $user){ 

$prev_url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; 

    $request_url = "Your custom URL after login"; 
    $default_url = "Your default URL"; 

if($prev_url == "http://prosentra.com/login/"){ 
    $redirect_to = $request_url; 
} else { 
    $redirect_to = $default_url; 
} 

return $redirect_to; 

} 
add_filter('woocommerce_login_redirect', 'wc_custom_user_redirect', 10, 3); 
+0

謝謝,不過比較遺憾的是沒有工作 –

+0

@MohamedOmar檢查我的編輯,如果它不是爲你工作。也許你做錯了什麼。 –

0

login_redirect過濾器用於在

/** 
* Redirect user after successful login. 
* 
* @param string $redirect_to URL to redirect to. 
* @param string $request URL the user is coming from. 
* @param object $user Logged user's data. 
* @return string 
*/ 
function my_login_redirect($redirect_to, $request, $user) { 
    //is there a user to check? 
    if (isset($user->roles) && is_array($user->roles)) { 
     //check for admins 
     if (in_array('administrator', $user->roles)) { 
      // redirect them to the default place 
      return $redirect_to; 
     } else { 
      return home_url(); 
     } 
    } else { 
     return $redirect_to; 
    } 
} 

add_filter('login_redirect', 'my_login_redirect', 10, 3); 

重定向所有登錄到主頁記錄與匿名函數(PHP 5.3+)之後改變重定向到的位置。

add_filter('login_redirect', create_function('$url,$query,$user', 'return home_url();'), 10, 3); 

你可以找到參考這裏

https://codex.wordpress.org/Plugin_API/Filter_Reference/login_redirect

+0

我想將所有用戶重定向到他們當前的頁面(他們已經在的頁面),除了登錄頁面本身,我想在從這個頁面登錄到主頁後重定向用戶 –