web-dev-qa-db-fra.com

add filter login_redirect ne contient pas la redirection d'origine demandée

Je fais un lien vers la page de connexion de WP en passant: redirect_to = play

... ttp: //www.my.com/wp-login.php/? redirect_to = play "> Cliquez ici ...

J'utilise la valeur (dans ce cas: play) comme un drapeau et non comme une URL de redirection réelle, car j'intercepte la demande de redirection à l'aide de:


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

Résultat attendu: $ wanted_redirect_to contiendrait la valeur: play. Cependant, wp login ne transmet pas la valeur originale de redirect_to, en fait, peu importe ce que je fais, les 2 paramètres $ Request_redirect_to et $ redirect_to sont toujours vides; seul l'utilisateur contient des données.

Comment puis-je transmettre ma valeur redirect_to d'origine tout au long du processus de connexion et dans le filtre: login_redirect?

1
MLH

Vous pouvez utiliser le filtre login_redirect. Voir ici http://codex.wordpress.org/Plugin_API/Filter_Reference/login_redirect

Je pense que c'est ce que vous recherchez.

Cela va normalement rediriger toutes les connexions. Pour pouvoir rediriger uniquement lorsque vous le souhaitez, vous pouvez utiliser un paramètre de chaîne de requête dans l'URL. Vérifiez le paramètre s'il existe une redirection.

Essayez d’ajouter ceci dans votre modèle de fichier 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
Dharmishtha Patel