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 ?
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 contenu | Taxonomies | Fichier PHP pour les taxonomies |
---|---|---|
Articles | Catégories, Tags | category.php, tag.php |
Pages | Aucune | 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.
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.
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 ?
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.
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.
Allez dans Réglages > Permaliens. Actualiser la page en front et dites-moi si cela fonctionne.
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.
Oui vérifiez bien votre code et sinon passez par un générateur comme ceux proposés par generatewp.com. 😉
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…
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?
A voir comment est codé le thème directement… mais le fichier archive.php devrait fonctionner sauf indication contraire dans le code.
Ok merci, je vais retourner sur le forum.
Zut, je me suis mal exprimé ! En fait je voudrais qu’a cette addresse (exemple avec category, mais je voudrais faire la meme chose avec la taxonomie d’un cpt) http://localhost/wordpress360/category/, il s’affiche la liste des catégories créés.
J’ai fait le test avec Twenty Twelve et Twenty Thirteen et j’ai une erreur 404.
Ah oui tout simple, il faut mettre à jour les permaliens dans l’admin pour valider la création de la nouvelle taxonomie et du custom post type.
Bonjour,
Est il possible que la page taxonomy.php gère cette adresse :
http://localhost/test/{taxonomy}/
merci
L’URL d’une page d’archive d’une taxonomie est personnalisable. On peut faire de la réécriture d’URL lors de la déclaration de la taxonomie personnalisée.
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.
Même problème.
Taxonomy créé, exemple créé, fichier thème taxonomy.php créé, lien vers taxonomy correct à partir de l’admin mais ….erreur 404…. pfff
Même réponse, il faut impérativement flasher les permaliens en faisant mettre à jour dans l’admin. 😉
Merci pour le tuto, petite question, pour twenty Twelve, il n’y plus de taxonomy.php, le système marche pareil sinon ?
Le fichier n’est pas présent car il n’est pas utile mais le fichier taxonomy.php fait partie intégrante de l’architecture des thèmes sous WordPress donc oui. 😉
Ok merci j’ai réussi à comprendre (oui oui ! :p) Encore merci pour le tuto et pour la réponse !
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…
Oui c’est possible mais faut s’y connaître en code : https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters
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’);
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
Oui la gestion des taxonomies et des CPT au niveau templating évolue au fil des versions. 😉