web-dev-qa-db-ja.com

追加フィルタlogin_redirectに、要求された元のリダイレクトが含まれていません

WPのログインページへのリンクを渡します:redirect_to = play

... ttp://www.my.com/wp-login.php/? redirect_to = play ">ここをクリックしてください...

次のようにリダイレクト要求を傍受するので、実際のリダイレクトURLではなく、値(この場合はplay)をフラグとして使用します。


function my_login_redirect($redirect_to, $requested_redirect_to, $user)
{
    var_dump($redirect_to);
    var_dump($requested_redirect_to);
    var_dump($user);
}
add_filter('login_redirect', 'my_login_redirect', 10, 3);

予想される結果:$ requested_redirect_toには、playという値が含まれます。しかし、wp loginは元のredirect_to値を中継しません。実際、私が何をしても問題ありません。2つのパラメータ$ requested_redirect_toと$ redirect_toは常に空です。 $ userだけにデータが含まれています。

オリジナルのredirect_to値をログインプロセスを通過してフィルタlogin_redirectに渡す方法を教えてください。

1
MLH

Login_redirectフィルタを使用できます。こちらを参照 http://codex.wordpress.org/Plugin_API/Filter_Reference/login_redirect

私はこれがあなたが探しているものだと思います。

これは通常すべてのログインをリダイレクトします。必要なときにだけリダイレクトできるようにするには、URLにクエリ文字列パラメータを使用できます。リダイレクトが存在する場合は、パラメータを確認してください。

これをテンプレートのfunctions.phpファイルに追加してみてください。

add_action( 'login_form' , 'glue_login_redirect' );
function glue_login_redirect() {
    global $redirect_to;
    if (!isset($_GET['redirect_to'])) {
        $redirect_to = 'YOURURLHERE';
    }
    else{
        $redirect_to = $_GET['redirect_to'];
    }
}
1