Tout savoir sur WordPress
Tutoriel WordPress

Rediriger vos membres vers la page d’accueil après connexion

Par défaut, un membre est redirigé vers sa page de profil après connexion. Cette astuce permet de rediriger automatiquement vos membres vers la page d’accueil de votre site WordPress après s’être connecter.

Si vous proposez à vos membres de se connecter à partir de la page de connexion de WordPress (wp-login.php), ils seront redirigés vers le tableau de bord de votre administration. Comment faire si vous souhaitez rediriger vos membres vers la page d’accueil de votre site après s’être connecté ?

L’astuce consiste à modifier le filtre login_redirect qui contient le lien de la page par lequel le membre sera redirigé après connexion.

Ce code se place dans le fichier functions.php de votre thème :
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]


add_filter("login_redirect", "gkp_subscriber_login_redirect", 10, 3);
function gkp_subscriber_login_redirect($redirect_to, $request, $user) {

  if(is_array($user->roles))
      if(in_array('administrator', $user->roles)) return site_url('/wp-admin/');

  return home_url();
}

[/pastacode]

Une fois l’astuce en place, l’accès à l’administration sera réservé en exclusivité aux administrateurs de votre site WordPress.

Cette astuce vient en complément de l’article de WP Channel : Rediriger vos membres vers la page d’accueil de votre blog WordPress après déconnexion.

Cet article a été mis à jour il y a 4567 jours - Il n'est peut être plus à jour !

Article écrit par Jonathan B.

Jonathan est le co-fondateur de WP Media, startup connue pour être l’auteur de WP Rocket et Imagify. Il est aussi co-organisateur du WordCamp Lyon et Paris.

41 Commentaires

  1. Bonjour,

    à quel endroit faut il insérer ce bout de code ? j’ai essayé différents endroits qui me paraissaient pertinent dans functions.php, mais je déclenche diverses erreurs…
    Theme utilisé twentyeleven (WP par défaut)
    et plugin private-wordpress
    PS : je suis “grand débutant en PHP et WP :)

    • C’est de ma faute, j’avais oublié une accolade en fin de code :)

      J’ai mis à jour le code. Il doit bien se mettre dans le fichier functions.php !

  2. Super, ça marche !
    merci pour cette réponse rapide :)
    et c’est promis demain je m’achete un bouquin sur le sujet, je connaitrais au moins la syntaxe :)

  3. Merci Jonathan de cette astuce qui m’a permis de mettre en place l’accès à un intranet géré par WordPress : à la connexion, les users sont redirigés vers une page dédiée [… return ‘accueil-intranet’;]

  4. Petite info complémentaire: on peut rediriger vers une toute autre page que la page d’accueil si on le souhaite. Pour se faire, sur la dernière ligne, dans les “()” à la suite de “return home_url” on insère l’adresse de la page désirée…
    ex: return home_url(‘/exemple/’);
    on sera alors redirigé vers http://www.mon-site.com/exemple/

    Petite question au passage. Dans la première ligne, à quoi correspondent le 10 et le 3 ??

    add_filter("login_redirect", "subscriber_login_redirect", 10, 3);
  5. @ Samsoul : le 10 correspond à la priorité d’exécution de la fonction d’appel et le 3 correspond au nombre d’arguments qui contient la fonction d’appel.

  6. Excellent ce petit code! merci
    Part contre comment je peut faire pour que les éditeur et les auteurs soit aussi rediriger vers /wp-admin/ ou plus simplement que seul les abonnés et contributeurs soit rediriger vers la page d’accueil du site?

  7. il faut modifier la ligne :

    if(in_array('administrator', $user->roles)) return site_url('/wp-admin/');

    par:

    if(in_array( array('administrator', 'editor', 'author'), $user->roles) ) return site_url('/wp-admin/');
  8. Impeccable !! Je cherchais cette petite fonction depuis un moment et m’en voila ravis :)

    MERCI MERCI MERCI

  9. Je rejoins les autres avis, MERCI pour cette astuce, fonctionne à 100%. Je cherchais en vain une solution et c’était si simple, ou presque :-) :-)

  10. Bonjour. Super ce code.
    En revanche, est-il possible de gérer la redirection également en fonction de la page d’origine?
    Je galère depuis 2 heures à adapter ton bout de code mais je n’y arrive pas.
    J’ai cru comprendre que $request devait porte l’URL d’origine??
    Merci d’avance de ton aide.

  11. Bonjour,

    J’ai placé le code dans le fichier functions.php de mon thème ( wisdom) mais je n’y arrive toujours pas . Merci de m’indiquer l’endroit précis où le placé si c’est cela
    le problème ! Merci d’avance

  12. @Chest : Le code se place bien dans le fichier functions.php présent à la racine de votre thème.

  13. @Jonathan : Oui j’ai fais comme vous avez dit, j’ai mi le code quelque part dans le fichier functions.php du thème mais toujours rien , je reçoit aucun message d’erreur pourtant. Je comprend pas . Aidez moi

  14. Qu’est-ce qui ne fonctionne pas ? SI vous êtes administrateur, c’est normal que vous ne soyez pas rediriger.

  15. bonjour

    Pour cause de probleme avec un plugin, j´ai du réinstaller wordpress, donc j´ai supprimer l´ancien sur ftp
    Maintenant quand je veux acceder à ma page Admin pour m´identifiée je tombe directe sur mon tableau de bord donc à cette adresse http://www.monblog.com/wp-admin

    inquiétant je ne sais pas quoi faire!(j´espère que je n´ai pas fait d´hors sujet)

    merci d´avance

  16. @Iza : je vous conseille d’aller faire un tour sur le forum de WordPress FR. Il se peut que d’autres personnes aient rencontré votre problème.

  17. @Zoneautique : Vous devez modifier

    site_url('/wp-admin/')

    par

    'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']'
  18. comment peut-on rediriger un utilisateur vers une page spécifique après connexion wordpress.
    (Exemple: je sélectionne une page protéger, je suis redirigé vers la page de connexion, après avoir entré mon mot de passe et login je voudrais être redirigé vers ma page choisie au départ et non la page d’accueil.)

    Aidez moi

  19. @Xavier: Il suffit de remplace return home_url(); par le choix de l’utilisateur.

  20. Bonjour Jonathan,

    Un grand merci pour ce code bien utile.

    Par contre je souhaitas tout comme Zoneautique que mes utilisateurs restent sur la page qu’ils utilisaient. J’ai essayé la modification que tu lui a demandé et ça ne fonctionne pas pour moi …

    Une idée ? Merci d’avance !!

  21. Bonjour Jonathan!
    Merci pour ce code. Je souhaite en plus avoir un tableau de bord à part pour juste ajouter une vidéo youtube ou uploader un fichier; quand il clique sur mon compte.

    Merci pour votre idée.

  22. @Diaba: Votre demande est un développement bien spécifique. Je ne pourrais pas vous aider via un commentaire. Désolé.

  23. @Diaba: je n’ai malheureusement plus de temps pour écrire des articles. J’en aurai encore moins pour vous aider sur un développement spécifique ;)

  24. Bonjour Jonathan,

    Ton code fonctionne très bien pour moi, merci !

    En revanche lorsque je me connecte (comme visiteur) par l’interface wordpress, je suis donc redirigé comme il faut vers ma page home sur mon front-office mais si je rentre “wp-admin” après l’url de mon site j’accède tout de même à mon tableau de bord, hors j’aimerai que mes users ne puissent pas du tout y acceder, as-tu une solution pour régler ce problème ? :-)

    Merci d’avance pour ton aide..

  25. Bonjour Jonathan, et grand merci pour ces lignes.
    ça fonctionne mais à la déconnexion, j’ai sur la page login :

    Notice: Undefined property: WP_Error::$roles in C:wampwwwblog_linuxwp-includesclass-wp-error.php on line 78

    (WP 4.1, twentyfifteen-child, Windows 7, Firefox 34.0) ; même erreur que le script soit sur le thème ou le child.

    Apparemment sans incidence sur la connexion suivante.
    Merci d’avance.
    DD

  26. Je fais suite à mon post précédent.
    J’ai corrigé la fonction de cette façon, et l’erreur a disparu :

    function gkp_subscriber_login_redirect($redirect_to, $request) {
    $user = wp_get_current_user() ;
    if(is_array($user->roles)) {
    if(in_array(‘administrator’, $user->roles)) {
    return site_url(‘/wp-admin/’);
    }
    }
    return home_url();

    J’ai trouvé ça en développant l’affichage conditionnel des lignes du widget meta en fonction du rôle de l’user.
    @ +

  27. Bonjour,

    Le code marche nickel, merci !

    Néanmoins, si l’url avant la connexion était “http://test.fr/pagetest/?variable=test”
    la variable $redirect_to est égale “http://test.fr/pagetest/”. Une partie de url a été tronqué.

    Y a-t-il un moyen de rediriger l’utilisateur vers la page “http://test.fr/pagetest/?variable=test” après connexion ??

    Par avance merci
    Laurent

  28. Je veux afficher page login dans page d’accueil une fois connecter entrer page des articles

    merci