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.
41 Commentaires
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 !
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 :)
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’;]
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 ??
@ 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.
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?
il faut modifier la ligne :
par:
Parfait merci beaucoup!
merci bien pour cette astuce ! elle marche très bien.
Merci pour ce bout de code qui semble en satisfaire plus d’un !
Impeccable !! Je cherchais cette petite fonction depuis un moment et m’en voila ravis :)
MERCI MERCI MERCI
@Lbonati : haha, ça fait plaisir de voir quelqu’un ravi comme cela :)
J’ai bien fait de le mettre dans les marques pages, je viens d’en trouver l’utilité.
Merci encore une fois!!
Je rejoins les autres avis, MERCI pour cette astuce, fonctionne à 100%. Je cherchais en vain une solution et c’était si simple, ou presque :-) :-)
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.
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
@Chest : Le code se place bien dans le fichier functions.php présent à la racine de votre thème.
@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
Qu’est-ce qui ne fonctionne pas ? SI vous êtes administrateur, c’est normal que vous ne soyez pas rediriger.
Bonjour, Gwen
Je me suis posé la même question pendant des mois sans trouver une réponse claire.
Par contre, j’ai découvert une extension, très simple, qui fait le travail, au moins dans mon cas. Ça a été écrit par un Français, il me semble. Tu peux voir par ici:
http://www.skyminds.net/wordpress-plugins/sky-login-redirect/
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
@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.
Pratique ce code.
Comment faire pour que l’utilisateur qui se connecte reste sur la page en cours ?
Est ce possible ?
@Zoneautique : Vous devez modifier
par
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
@Xavier: Il suffit de remplace
return home_url();
par le choix de l’utilisateur.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 !!
@Coquillette : J’ai donné la réponse un peu plus haut :)
Merci, ça fonctionne parfaitement!
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.
@Diaba: Votre demande est un développement bien spécifique. Je ne pourrais pas vous aider via un commentaire. Désolé.
oubien je vous fais un MP?
@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 ;)
Merci beaucoup.
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..
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
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.
@ +
Merci pour cette amélioration :)
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
Je veux afficher page login dans page d’accueil une fois connecter entrer page des articles
merci