Créer une page d’archive pour les taxonomies personnalisées de WordPress

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.

26 commentaires

  1. Yannick Altuna

    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. thomas

    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. thomas

        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. olivier

    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. Marc

    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?

  5. Nicfur

    Bonjour,

    J’ai créé un page taxonomy pour un CPT, mais j’aimerais que le résultat soit trié par ordre alphabetique…

    Avez-vous une idée ? Je bloque complètement…

  6. Michelle

    Bonjour,

    J’ai créé une page archive-NOM_DE_LA_TAXONOMIE_PERSO.php où je liste les CPT avec les deux terms de ma taxonomy.
    Puis taxonomy-TAXO_PERSO-TERME.php et taxonomy-NOM_DE_LA_TAXONOMIE_PERSO.php
    Si je veux accéder à monsite.com/taxonomy/term je suis dirigé vers une erreur 404.
    Je suis bloqué et je n’arrive pas à voir où je me suis trompé et comment rectifier même en me rapportant à la hierarchie-template.
    Pourriez-vous m’aider s’il vous plait? Je vous remercie d’avance.

      1. Michelle

        Bonjour,
        Rafraichir les permaliens est la 1ere chose que j’ai fait. Cela ne fonctionne pas.
        J’ai commencé à partir de la page archive-MON_CUSTOM_POST_TYPE.php (dont vous avez généreusement partagé le tuto) qui s’affiche bien.
        Je peux accéder à chacun des CPT (via single-MON_CUSTOM_POST_TYPE.php).
        Comme je n’ai pas encore réussi à trouver comment mettre le h1[ echo $term->name ] sous forme de lien, j’essaye d’y accéder via l’adresse monsite.com/taxonomy/term et c’est à ce moment que j’arrive sur la 404.php
        Peut être que mon erreur vient de mon register_taxonomy … Je vais revérifier mon code avec le codex sous la main.
        Merci.

  7. aurelienschiltz

    Bonjour,

    Est ce qu’une taxonomie peut contenir une autre taxonomie ? Par exemple je compte faire un schéma comme celui ci :

    Pays (Taxonomie) -> Leagues , Saisons (deux taxonomies différentes) -> Club (Custom post type) -> Joueur (custom post type), staff

    Est ce possible pour la hierarchie entre pays et leagues ?

    1. Aurélien Denis auteur de l’article

      Je ne le pense pas… le plus simple est de créer une taxonomie dite hiérarchique qui autorise les termes et les sous-termes. Sinon, voir du côté de ACF pour créer des relations entre des termes.

Laisser un commentaire

Thèmes & Plugins
Premium By WP Channel

WP Alacarte propose des produits et services de qualité
made in France pour la plateforme WordPress.

Tout est prêt pour créer votre site à la carte !

  • Thèmes et extensions premium
  • Facilité d’utilisation garantie
  • Temps de chargement optimisé
  • Personnalisation avancée
Découvrir

Rejoignez la communauté WordPress !

Faites partie de l’aventure en devenant membre d’une association WordPress. Conférences, ateliers, BarCamp, WordCamp… Venez
partager votre passion pour WordPress !

Aurélien DENIS,
président des associations WordPress Francophone et WPMX