web-dev-qa-db-de.com

filter hinzufügen login_redirect enthält keine ursprünglich angeforderte Umleitung

Ich verweise auf die Anmeldeseite von WP und gehe folgendermaßen vor: redirect_to = play

... ttp: //www.my.com/wp-login.php/? redirect_to = play "> Klicken Sie hier ...

Ich verwende den Wert (in diesem Fall: play) als Flag und nicht als tatsächliche Weiterleitungs-URL, da ich die Weiterleitungsanforderung abfange mit:


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);

Erwartetes Ergebnis: $ required_redirect_to würde den Wert "play" enthalten. Allerdings gibt wp login nicht den ursprünglichen Wert von redirect_to weiter, egal was ich tue, die beiden Parameter $ asked_redirect_to und $ redirect_to sind immer leer. Nur $ user enthält Daten.

Wie gebe ich meinen ursprünglichen Wert für "redirect_to" vollständig durch den Anmeldevorgang und in den Filter "login_redirect" weiter?

1
MLH

Sie können den Filter login_redirect verwenden. Siehe hier http://codex.wordpress.org/Plugin_API/Filter_Reference/login_redirect

Ich denke, das ist was du suchst.

Dadurch werden normalerweise alle Anmeldungen umgeleitet. Um nur umzuleiten, wenn Sie möchten, können Sie einen Abfragezeichenfolgenparameter in der URL verwenden. Prüfen Sie, ob der Parameter vorhanden ist, und leiten Sie ihn weiter.

Versuchen Sie dies in Ihre template functions.php-Datei einzufügen:

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