WordPress : Rediriger une page vide vers une sous-page

Dans la série « ça peut servir », je vous propose une petite astuce qui permet automatiquement de renvoyer un visiteur vers une page enfant lorsque la page parent est vide (sans aucun contenu).

Ce cas se présente souvent lorsque l’on crée un menu de navigation principal et que l’on souhaite diviser les contenus en plusieurs sous-pages. Dans ce cas, soit on fait un résumé de toutes les sous-pages dans la page parent, soit on redirige vers la première sous-page.

Bon, je sais qu’il existe une solution bien connue qui consiste à appliquer un modèle de template à la page parent. Mais dans ce cas, il y a quand même une manipulation à faire qui n’est pas toujours bien comprise par un néophyte (« Attends, je dois modifier le template de la page, pour que cela ait un impact sur le menu ???« ).

Ma solution, est bien plus simple, et automatique pour l’utilisateur !

On avant d’envoyer la page au navigateur, on va vérifier qu’il y a bien un contenu à l’intérieur. S’il n’y a pas de contenus, on va faire une requête pour savoir s’il y a une sous-page rattachée. Si cette requête est positive, on fait une redirection vers celle-ci.

Place au code ! (à placer dans le fichier functions.php du thème)

Attention ! la redirection doit être effectuée avant que le serveur n’envoie les premières données au client. Dans le cas d’un problème de type « Headers already sent », il faudra effectuer une vérification selon le lien suivant : http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php

Si toutefois, la vérification ne donnais rien, il existe un petit code qui permettra de se défaire du problème (en dernier recours…) :

Répondre

Votre adresse email ne sera jamais publiée.

Vous pouvez utiliser les balises HTML et attributs suivants : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

*