web-dev-qa-db-fra.com

Rediriger vers l'URL de référence après la connexion

Ce que je veux, c'est simplement rediriger un utilisateur vers l'URL de renvoi une fois qu'il s'est connecté. J'essaie de comprendre cela depuis quelques jours et j'ai lu tout ce que je pouvais, mais ce que j'ai posté find as 4-5 ans ou le code que j'essaie ne semble pas fonctionner.

Je suis sur un multisite et préférerais quelque chose qui serait appliqué à tous les sous-sites, mais pour l'instant, je peux régler avec quelque chose qui modifie chaque site individuellement.

Voici la dernière chose que j'ai essayée: le code que j'ai trouvé quelque part, mais cela continue de rediriger l'utilisateur vers son profil côté administrateur.

function redirect_after_login() {
    $refer=urlencode($_SERVER["REQUEST_URI"]);
    global $redirect_to;
    if (!isset($_GET['redirect_to'])) {
        $redirect_to = $refer;
    }
}
add_action('login_form', 'redirect_after_login');

Si quelqu'un pouvait me diriger dans la bonne direction, ce serait génial!

1
Shayne H.

Votre code est complètement défectueux - pour ne pas dire que vous ne pouvez pas rediriger vers le référent HTTP après la connexion ... car le référent est maintenant la page de connexion. Utilisez plutôt le filtre login_redirect :

add_filter( 'login_redirect', function ( $redirect_to, $requested_redirect_to ) {
    if ( ! $requested_redirect_to ) {
        $redirect_to = wp_get_referer();
    }

    return $redirect_to;
}, 10, 2 );

Notez que nous ne remplaçons que $redirect_to si $requested_redirect_to est "vide", sinon:

  1. Cela cassera le paramètre d'URL redirect_to que WordPress et de nombreux plugins utilisent pour définir des redirections post-connexion spécifiques autres que celles par défaut (j'ai trop souvent vu des plugins casser complètement cette fonctionnalité).

  2. Si nous toujours le configurons comme référant, nous nous retrouverons avec la page de connexion elle-même (comme mentionné précédemment). En effet, lorsqu'un utilisateur accède pour la première fois à la page de connexion, WordPress définit un champ masqué redirect_to avec la valeur $redirect_to. Lors du chargement de page suivant (en vous connectant), cela devient la valeur $requested_redirect_to.

1
TheDeadMedic