サポート » 使い方全般 » ログイン後のリダイレクト

  • 解決済 yutayamadatippet

    (@yutayamadatippet)


    いつもお世話になっております。

    会員制サイトを運用しており、フロント側にログインページに遷移できる導線を設置しております。
    ログインURLは以下の様に、元いるページにリダイレクトするような形で設置しております。

    <a href="<?php echo wp_login_url( $_SERVER['REQUEST_URI'] ); ?>">ログイン</a>
    出力されるURL:/wp-login?redirect_to=【元いるページのURI】

    「/wp-login」の後ろにパラメータが付いた場合は、指定したページにリダイレクトされるのですが、
    パラメータが付いていない状態でログインすると、/wp-admin/の管理画面にリダイレクトされてしまいます。

    上記より、トップページにリダイレクトされるようにfunction.phpに以下のように記述しましたが、
    以下のように設定すると、「/login?redirect_to=【元いるページのURI】」が無視されて、すべてのログインがトップページにリダイレクトされてしまいます。

    function login_redirect_page() {
    return home_url();
    }
    add_filter('login_redirect', 'login_redirect_page');

    ログインのリダイレクトの条件を以下のようにしたいのですが、どのようにすれば良いでしょうか。

    A:リダイレクトのパラメータが付いている時は、パラメータのURLにリダイレクト
    B:パラメータがついていない時は、function.phpで指定したURLにリダイレクト

    恐れ入りますが、わかる方がおりましたら、お教えいただければと思います。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • login_redirect フックの第2引数($request)にリダイレクト先の URL が渡されます。これで判定するといいかと思います。
    https://codex.wordpress.org/Plugin_API/Filter_Reference/login_redirect

    トピック投稿者 yutayamadatippet

    (@yutayamadatippet)

    ありがとうございます!!
    教えていただきました、$requestで判定させたところ、無事に意図する動作となりました。
    こちらの質問は解決済みとさせていただきます。

    function my_login_redirect( $redirect_to, $request ) {
        if ( empty($request)) {
                $redirect_to =  home_url('');
        }
        return $redirect_to;
    }
    
    add_filter( 'login_redirect', 'my_login_redirect', 10, 3 );
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「ログイン後のリダイレクト」には新たに返信することはできません。