Modifier le Template Hierarchy WordPress selon vos besoins
Le template hierarchy est la façon dont WordPress opère pour charger un fichier de template. A force d’utilisation j’ai pu noter quelques problèmes par rapport à ma construction habituelle de sites et je vous propose deux petites astuces si vous rencontrez les mêmes soucis.
Astuce n°1 : Rediriger vers un autre template
Dans la plupart des cas, votre page de recherche search.php aura le même design que votre page archive, donc autant ne pas s’embêter avec deux modèles différents au code quasiment identique. Pour rediriger la recherche vers la page d’archive, il vous suffit d’utiliser la fonction WordPress suivante :
<?php get_template_part('archive'); ?>
D’aucuns me dirons qu’ils veulent que le titre de la page soit “Recherche : votre recherche” et non pas “Archives“. Il suffit pour cela, dans la page archive.php de rajouter ce petit bout de code qui traitera la plupart des cas de figure.
<?php // case : display a category if (is_category()) { $title = "Catégorie : ".single_tag_title( '', false); } // case : display a tag elseif (is_tag()) { $title = "Mot clé : ".single_tag_title( '', false); } // case : display a tag elseif (is_search()) { $title = "Recherche : ".get_search_query(); } else { $title = "Actualités"; } ?> <h1><?php echo $title; ?></h1>
De cette manière, un seul design, une seule page de template, et les cas de figure différents pour le titre sont bien traités.
Astuce n°2 : Rediriger vos taxinomies vers la page archive parente
Un autre aspect qui peut vite être contraignant, et le fait de faire une page d’archive pour votre custom post type : admettons que l’on fasse un site de restaurant, auquel on ajoute un type de publication Plats (Si vous ne connaissez pas les custom types, rendez-vous ici).
Dans les plats, nous allons ensuite créer des taxinomies (taxonomy en anglais), en d’autres termes une sorte de catégorie pour les plats. Appelons cette taxinomie Type de plats et nous insérerons Entrées, plats et desserts.
Si maintenant dans votre menu principal vous faites un menu “Nos plats” (et que votre type répond sous /type-de-plats/), WordPress ira chercher archive-type-de-plats.php. Si maintenant vous faites des sous-menus pour afficher “Entrées“, “Plats” et “Desserts” ils vont pointer d’abord sur taxonomy-entrees.php, puis sur taxinomy.php et enfin sur archive.php.
Le problème : dans aucun cas vous n’êtes ramenés vers archive-type-de-plats.php. Dans la majorité des cas, votre archive.php sera utilisé pour la partie blog et la mise en page sera à coup sûr différent.
La solution : sur taxonomy.php, j’ai ajouté un petit bout de code afin de définir sur quelle taxonomie on est, et surtout à quel post type elle appartient. On va ensuite chercher directement la page archive-[post-type].php correspondant. Puisque là aussi il y a peut de chance que les taxonomies “Entrées“, “Plats” et “Desserts” aient un design différent.
// les données issues de la requête WordPress $queried_object = $wp_query->get_queried_object(); // La taxinomie en cours $taxonomy = $queried_object->taxonomy; // Les données de cette taxinomie $tax_object = get_taxonomy($taxonomy); // Parmi ces données, on récupère le custom type associé $custom_type = $tax_object->object_type[0]; // Si le template d'archive existe, on le charge if (file_exists('archive-'.$custom_type.'.php')) { get_template_part('archive-'.$custom_type); }
Si vous souhaitez comprendre ce code plus en détail, mettez des var_dump($var) à chaque étape pour voir les données retournées.
En résumé : mon template hierarchy revisité pour mes besoins
Je vous propose ici des astuces pour adapter WordPress à vos besoin, sans la prétention de vouloir refaire le monde. Voici donc le Template Hierarchy comme je l’utilise :
Vous trouverez l’original ici.
Si vous connaissez des techniques que vous estimez “plus saines”, n’hésitez pas à lancer la discussion !
0 Commentaire