サポート » テーマ » ログイン後のリダイレクト先を分岐させたい

  • 解決済 jan202020

    (@jan202020)


    会員専用サイトを作りたいです。会員専用サイトなので、必ず最初にログインしてもらうのですが、ログイン後のリダイレクト先をトップページに変更したいです。
    具体的には、以下のような動きです。

    ◎WordPressのデフォルトの動き
    普通にログインする⇒ダッシュボードに遷移する
    未ログインの状態でページに直接アクセスする⇒ログインに成功したら行きたかったページに行ける

    ◎希望する動き
    普通にログインする⇒トップページに遷移する
    未ログインの状態でページに直接アクセスする⇒ログインに成功したら行きたかったページに行ける

    普通にログインするとトップページに必ず飛ばされるようにするのは、調べて以下のようにしたら実現できました。

    if(!function_exists('mbe_wp_home_page')){
    	function mbe_wp_home_page($username, $user){
    		wp_redirect(site_url('/', 'http'), 301);
    		exit;
    	}
        add_action('wp_login', 'mbe_wp_home_page', 10, 2);
    }

    でも、デフォルトの動きの「未ログインの状態でページに直接アクセスする⇒ログインに成功したら行きたかったページに行ける」もやりたかったので、更に色々付け加えてみたのですが、どうも希望する動きができません。

    そこで、ページに直接アクセスする時のログイン画面のURLと、未ログインの状態で行きたい場所がある場合のログイン画面のURLが違うようだったので、以下のようなif文を書いてみたのですが、今度は通常ログインのトップページ遷移が効かなくなってしまいました。

    if(!function_exists('mbe_wp_home_page')){
    	if($_SERVER["REQUEST_URI"]=="http://example.jp/wp-login.php?redirect_to=http%3A%2F%2Fexample.jp%2F"||$_SERVER["REQUEST_URI"]=="http://example.jp/wp-login.php?loggedout=true"){
    				function mbe_wp_home_page($username, $user){
    						wp_redirect(site_url('/', 'http'), 301);
    						exit;
    				}
    		}
        add_action('wp_login', 'mbe_wp_home_page', 10, 2);
    }

    アドバイスいただけたらと思います。よろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    ログイン後のリダイレクト先を変更する場合は、login_redirect フィルターにフックするのが一般的かと思います。

    このフィルターは、ログイン後のリダイレクト先を変更できるものなので、引数に応じて、トップページのURL(site_urlよりhome_urlの方が適切です)を返すようにすれば実現できるかと思います。

    トピック投稿者 jan202020

    (@jan202020)

    jim912さん
    フックですね!全く思いつきませんでした。ありがとうございます。とてもスマートな方法があるのですね。
    home_urlの方が良いことも、アドバイスありがとうございます!早速試してみます!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「ログイン後のリダイレクト先を分岐させたい」には新たに返信することはできません。