2016-11-26 55 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

我想将所有用户重定向到他们当前的页面(他们已经在的页面),除了登录页面本身,我想在从这个页面登录到主页后重定向用户 –