2016-11-26 8 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); 

そのユーザからのログイン要求されたページには、次のURLに等しい場合、私は、現在のページに私をリダイレクトホームページに私をリダイレクトし、そうでない場合「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

おかげで見つけることができますが、申し訳ありません、それはそのあなたのために働いていない場合は、私の編集をチェック@MohamedOmar –

+0

を動作しませんでした

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

。おそらくあなたは何か間違ったことをしているでしょう。 –

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+)とホームページにすべてのログインをリダイレクトします。あなたがここに参照

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

+0

ログインページそのものを除いて、すべてのユーザーを現在のページ(すでに存在するページ)にリダイレクトする場合は、このページからホームページにログインした後にユーザーをリダイレクトする –

関連する問題