archive-livre

Les taxonomies personnalisées sont aux custom post types ce que les catégories ou les tags sont aux articles. En termes clairs, un type de contenu personnalisé peut disposer d’un classement qui lui est propre. Afficher une page d’archive d’une catégorie nécessite la présence du fichier category.php dans votre thème, mais comment faire de même pour vos taxonomies ?

N.B : ce tutoriel est réservé à des utilisateurs initiés au système de templating de WordPress.

Commençons par rappeler l’architecture d’un thème WordPress – notamment pour ce qui est de la gestion des archives. Je vous renvoie au schéma du codex et à la ligne Taxonomy Custom Archive.

Type de contenuTaxonomiesFichier PHP pour les taxonomies
ArticlesCatégories, Tagscategory.php, tag.php
PagesAucune archive.php
Produits (type personnalisé)Catégories de produits taxonomy.php, taxonomy-$taxonomy.php, taxonomy-$taxonomy-$term.php

Prenons un cas d’exemple simple : un custom post type Produits et une taxonomie personnalisée Catégories de produits.

La taxonomie liste des termes comme Livres, DVD, CD.

Ainsi, selon le schéma du codex, nous avons le choix entre 3 fichiers de taxonomie. Tout dépend du niveau de hiérarchie et de personnalisation à atteindre :

  • taxonomy.php : le fichier de base pour afficher les archives d’une taxonomie personnalisée. Dans notre exemple, il s’agit des catégories de produits. Mais le même fichier sera utilisé si vous créez d’autres taxonomies sur-mesure ;
  • taxonomy-NOM_DE_LA_TAXONOMIE_PERSO.php : ce fichier est déjà plus intéressant. Il suffit d’indiquer le nom exact de la taxonomie personnalisée que vous aurez créé. Ici, ce fichier sera de la forme taxonomy-categorie_produits.php par exemple et affichera les données issues des différentes catégories de produits ;
  • taxonomy-TAXO_PERSO-TERME.php : les livres, les DVD ou encore les CD constituent les termes de notre taxonomie personnalisée Catégories de produits. Nous pouvons créer un fichier pour chacun de ces termes pour pousser encore plus la personnalisation ;

Je vous suggère de commencer simplement par le fichier taxonomy.php dans le cas où vous n’utilisez qu’une taxonomie sur-mesure.

Pour ce faire, connectez-vous sur votre serveur FTP puis localisez le dossier /wp-content/themes/NOM_DU_THEME/ et créez le fichier taxonomy.php pour débuter.

Comme il s’agit d’une page d’archive classique, vous pouvez très bien copier / coller le code source du fichier archive.php et appliquer des modifications à votre guise (indiquer une sidebar spéciale, appliquer de nouvelles classes CSS, etc.).

Retournez à présent sur votre site puis tentez d’accéder à une catégorie de produits. Vous devriez obtenir une page d’erreur 404 : c’est normal ! Vous devez mettre à jour les permaliens à partir de l’onglet Réglages puis Permaliens du back office de WordPress.

Capture d'écran - Permaliens sous WordPress
Mettre à jour les permaliens est obligatoire pour valider les changements !

Actualisez la page pour constater le bon affichage des données.

En ayant suivi ce tutoriel, vous devriez être en-mesure de créer des pages d’archives de vos différentes rubriques de façon personnalisée en fonction des données affichées.

18 commentaires

  1. Merci Aurélien pour cette astuce, j’en avais justement besoin pour classer des CPT. Je découvre au passage l’arborescence mise à jour, je ne savais pas qu’ils l’avaient étoffé ><.

    Cordialement,
    Yannick

  2. bonjour !
    je suis en train de chercher si on peut définir un ordre particulier pour les posts listé dans le template taxonomy.php.
    par défaut ils apparaissent chronologiquement, du post le plus récent au post le plus ancien MAIS j’aimerais pouvoir les lister alphabétiquement… c’est possible ?
    je ne vois pas quelle query employer…

      1. Merci pour ta réponse, entre temps j’ai trouvé une solution qui fonctionne parfaitement sur le template taxonomy :
        query_posts($query_string . ‘&orderby=title&order=ASC’);

  3. Bonjour, J’ai créé le fichier taxonomy.php et j’ai rechargé les permaliens mais rien n’y fait j’ai toujours une erreur 404 ça fait des heures que je m’arrache les cheveux.

    Auriez-vous une idée de solution au problème ? (je sais que sans voir le code il est difficile de débuger)

    Merci d’avance.

  4. Bonjour et merci pour ce tuto!
    J’ai aussi une interrogation concernant l’affichage des custom post type.
    J’arrive bien à les afficher dans ma page taxonomy.php.
    Mais quand je retire cette page, dans ma page archive.php, au lieu de m’afficher mes CPT, j’obtiens l’affichage des posts « standards ».
    Pourtant j’ai bien la valeur de la taxonomie spécifique que j’ai cliqué dans l’url.
    Une idée du de la cause?