Tout savoir sur WordPress

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 :

template-hierarchy-improved

Vous trouverez l’original ici.

Si vous connaissez des techniques que vous estimez « plus saines », n’hésitez pas à lancer la discussion !

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

Article écrit par Maxime BJ

Développeur, bloggeur et formateur Web spécialisé WordPress. 31 ans. Grenoblois. Co-fondateur de WPChef, l’organisme de formation WordPress.

Organisateur de WPInAlps, le meetup WordPress Grenoblois. Vous pouvez me rencontrer lors d’événements tels que WordCamp Paris et Europe. Traducteur Français de l’extension Advanced Custom Fields. Également développeur d’applications web avec MeteorJs. Je m’occupe un site pour apprendre l’informatique aux débutants gratuitement.

J’aime les jeux vidéo, la rando, la bouffe bien grasse et les voyages.

0 Commentaire

d3bde7eba3ed80a5f334e22f4e45a5f7DDDDDDDDDDDDDDDDDD