Quésaco ?


Quand on commence à personnaliser l’expérience utilisateur sur WordPress, on se rend vite compte qu’une simple page d’accueil ne suffit pas toujours. Entre les visiteurs anonymes, les membres connectés, les espaces privés ou certaines sections à réserver, il devient utile d’adapter automatiquement le parcours.

Le code que je vous propose aujourd’hui répond justement à ce besoin très concret : rediriger un utilisateur connecté vers une page d’accueil dédiée, tout en bloquant l’accès à certaines URLs sensibles pour les visiteurs non connectés. C’est une approche simple, légère, et particulièrement pratique pour un intranet, une médiathèque, un espace adhérent ou un site avec contenu réservé.

Dans cet article, nous allons voir comment utiliser template_redirect pour gérer ces redirections proprement, pourquoi ce hook est bien adapté à ce cas, et quels points surveiller pour éviter les effets de bord, notamment avec Elementor et les pages d’agenda.

Pourquoi utiliser template_redirect pour gérer les accès


Sur un site WordPress, il arrive souvent que l’on souhaite proposer une expérience différente selon le profil du visiteur. Un membre connecté n’a pas les mêmes besoins qu’un visiteur anonyme : page d’accueil personnalisée, accès à des ressources privées, agenda réservé, espace documentaire, etc.

Le hook template_redirect est particulièrement adapté à ce type de logique. Il intervient juste avant le chargement du template de la page, à un moment où WordPress connaît déjà le contexte : page d’accueil, utilisateur connecté, type d’URL visitée, et bien plus.

Dans le cas présent, l’objectif est double :

  • envoyer les utilisateurs connectés vers une page d’accueil dédiée
  • empêcher les visiteurs non connectés d’ouvrir les pages d’agenda
  • éviter d’interférer avec l’éditeur Elementor
  • garder une logique simple à maintenir dans le temps

Cette méthode fonctionne très bien sur un site associatif, une médiathèque, un intranet ou un portail membre.

Le code complet à ajouter dans WordPress


Voici le code à intégrer tel quel dans le fichier functions.php de votre thème enfant ou dans un plugin dédié.

add_action( 'template_redirect', 'redirect_my_homepage' );
function redirect_my_homepage(){
if ( is_user_logged_in() && is_front_page() && !(strpos($_SERVER['REQUEST_URI'], 'elementor') !== false) ) {
wp_redirect('/accueil-connected') ;
exit();
}
}
add_action( 'template_redirect', 'redirect_agendas' );
function redirect_agendas(){
if ( !is_user_logged_in() && preg_match('/\/agenda\/(.*)/', $_SERVER['REQUEST_URI']) ) {
wp_redirect('/accueil') ;
exit();
}
}

L’idée ici est de séparer les deux comportements dans deux fonctions distinctes, ce qui rend la lecture plus simple.

Rediriger les membres connectés depuis la page d’accueil


La première fonction surveille la page d’accueil publique du site.

Si un utilisateur est connecté et qu’il arrive sur cette page, il est immédiatement envoyé vers /accueil-mediatheque.

Cela permet de créer un véritable espace d’entrée réservé aux membres sans changer la page d’accueil publique destinée aux visiteurs.

Le test repose sur trois conditions :

  • l’utilisateur est connecté avec is_user_logged_in()
  • il se trouve sur la page d’accueil grâce à is_front_page()
  • l’URL ne contient pas elementor

Ce dernier point évite un problème assez fréquent : pendant l’édition d’une page avec Elementor, une redirection automatique pourrait empêcher l’éditeur de se charger correctement.

Bloquer certaines URLS aux visiteurs non connectés


La seconde partie du code protège toutes les URLs qui commencent par /agenda/.

Dès qu’un visiteur non connecté tente d’ouvrir une page de ce type, il est renvoyé vers /accueil.

Le test s’appuie sur une expression régulière avec preg_match(), ce qui permet de couvrir toutes les sous-pages de l’agenda, par exemple :

  • /agenda/reunion-bureau
  • /agenda/evenement-public
  • /agenda/2026/avril

C’est une solution rapide quand toute une arborescence doit être restreinte.

Quelques points à surveiller


Même si ce code fonctionne bien, quelques vérifications méritent votre attention.

Utiliser wp_safe_redirect()

Si les URLs de destination restent internes à votre site, vous pouvez remplacer wp_redirect() par wp_safe_redirect().
Le comportement reste identique, avec une validation supplémentaire sur l’URL cible.

Bien choisir les slugs

Les chemins suivants doivent exister :

  • /accueil-mediatheque
  • /accueil

Une erreur de slug provoquerait une redirection vers une page inexistante.

Préférer un plugin maison

Si cette logique devient centrale dans votre site, le plus propre reste de placer ce code dans un petit plugin personnalisé plutôt que dans le thème.
Vous évitez ainsi de perdre la fonctionnalité lors d’un changement de thème.

Un cas d’usage très pratique sur un site membre


J’utilise souvent ce type de redirection sur des sites WordPress qui distinguent clairement :

  • une partie publique
  • un espace adhérent
  • des ressources internes
  • des agendas privés
  • une médiathèque

Le visiteur anonyme garde une navigation classique, tandis que le membre arrive directement dans son environnement de travail.
Le site devient plus fluide à utiliser, sans multiplier les menus ou les pages intermédiaires.

C’est une petite portion de code, mais elle change réellement la manière dont les utilisateurs circulent sur le site.