web-dev-qa-db-fra.com

Différents modèles pour les catégories/taxonomies des parents et des enfants

J'aimerais savoir quel est le meilleur moyen de créer un modèle différent pour les catégories et/ou les taxonomies parent et enfant.

Exemple: j'ai une taxonomie appelée région, que je souhaite diviser en pays et en villes à l'intérieur des pays. Donc, je vais avoir un terme de taxonomie parent appelé Italie, et ce sont des termes de taxonomie pour enfants, Rome, Milan, Naples, peu importe. Est-il possible d'avoir différents modèles pour le pays et la ville? Comment puis-je atteindre cet objectif? Merci d'avance.

3
Cthulhu

Je suggère de créer 3 fichiers

1) regiontemplate-country.php

2) regiontemplate-city.php

Ces 2 contiendront les modèles pour pays et ville, puis

3) taxonomy-region.php

Dans ce fichier, ajoutez le code pour charger le modèle approprié

<?php
$term = get_term_by('slug', get_query_var('term'), 'region');
if((int)$term->parent)
    get_template_part('regiontemplate', 'city');
else
    get_template_part('regiontemplate', 'country');
5
Mridul Aggarwal

WordPress a une hiérarchie template qui recherchera des fichiers de template particuliers dans un ordre spécifique. S'il existe, WordPress utilisera ce fichier modèle pour restituer votre sortie.

Pour les taxonomies, la hiérarchie spécifique est la suivante:

1. taxonomy-{taxonomy}-{slug}.php //e.g. taxonomy-region-milan.php
2. taxonomy-{taxonomy}.php //e.g. taxonomy-region.php
3. taxonomy.php
4. archive.php
5. index.php 

Donc, en tenant compte de ce qui précède, vous pouvez créer un fichier modèle pour votre region,

taxonomy-region.php //e.g. http://www.example.com/region/

... et un fichier modèle spécifique slug pour chaque région,

taxonomy-region-milan.php //e.g. http://www.example.com/region/milan/
taxonomy-region-roma.php //e.g. http://www.example.com/region/roma/
etc...

Qu'est-ce qui se passe est-ce ...

Si un utilisateur navigue vers,

http://www.example.com/region/milan/

WordPress tentera d’abord de localiser taxonomy-region-milan.php; s’il le trouve, il renverra ce fichier en tant que fichier modèle pour ce terme de taxonomie. S'il n'est pas trouvé, il passera au choix logique suivant, taxonomy-region.php, comme solution de secours, et ainsi de suite dans la liste hiérarchique ci-dessus jusqu'à arriver à index.php, ce que vous aurez très certainement car sans lui, votre thème ne fonctionnerait pas.

Globalement, ce concept pourrait convenir si vous travaillez avec seulement quelques villes ou régions d'Italie ou de n'importe quel pays. Mais au moment où vous commencez à travailler avec plusieurs villes/régions/pays et constatez que vous répétez constamment le même code dans différents fichiers de modèle, il est temps d'utiliser une approche plus efficace.

Ma question est donc la suivante: le modèle pour toutes les villes/régions mentionnées dans votre PO sera-t-il le même? Ou chacun variera-t-il différemment? Si oui, combien? Parce que, dans la mesure du possible, vous souhaitez réduire le code répétitif, ce qui vous simplifie la vie si vous avez besoin d'ajuster/modifier/Ajuster quelque chose et de faire en sorte que ce changement se répercute sur l'ensemble de votre site.

Effectuer manuellement cette opération sur plusieurs fichiers peut s'avérer fastidieux et vous exposer à davantage d'erreurs.

Ressource: http://codex.wordpress.org/Template_Hierarchy

1
userabuser