Taxonomies
Les taxonomies dans WordPress permettent d'organiser vos types de contenu personnalisés. Cette documentation explique comment créer et gérer des taxonomies de manière efficace.
Création d'une taxonomie
Pour créer une taxonomie, utilisez la méthode addTaxonomy dans votre classe de post type. Il est recommandé de définir chaque taxonomie dans une méthode séparée pour une meilleure organisation.
public function setupRecipeCategories() { $this->addTaxonomy('recipe_category', 'Catégories de recettes') ->isFemale() ->setLabels([ 'plural' => 'catégories', 'singular' => 'catégorie', ]) ->register(); }
Paramètres de la taxonomie
Identifiants
- slug
string- Identifiant unique de la taxonomie (en minuscules, sans espaces ni caractères spéciaux) - menuName
string- Nom affiché dans l'administration
Personnalisation
Genre des libellés
->isFemale()- Pour les noms féminins (par défaut)->isMale()- Pour les noms masculins
Personnalisation des libellés
->setLabels([ 'plural' => 'ingrédients', // Nom au pluriel 'singular' => 'ingrédient', // Nom au singulier ])
Utilisation des taxonomies
Récupération des termes
Tous les termes d'une taxonomie
{% for term in post.get_terms('recipe_category') %} <span class="tag">{{ term.name }}</span> {% endfor %}
Champs personnalisés sur les termes
Depuis 26.0.9.6, la façade Taxonomy intègre le trait Fields. Vous pouvez donc attacher des champs Carbon Fields aux termes d'une taxonomie, exactement comme vous le feriez sur un post type.
Déclaration des champs
Utilisez addContainerFields() sur l'instance de taxonomie, puis appelez registerTaxonomyContainers() dans un hook carbon_fields_register_fields.
use Carbon_Fields\Field; public function setupRecipeCategories() { $taxonomy = $this->addTaxonomy('recipe_category', 'Catégories de recettes') ->isFemale() ->setLabels([ 'plural' => 'catégories', 'singular' => 'catégorie', ]) ->register(); $taxonomy->addContainerFields('Informations', [ Field::make('image', 'recipe_category_image', 'Image de la catégorie'), Field::make('textarea', 'recipe_category_description', 'Description courte'), ]); add_action('carbon_fields_register_fields', [$taxonomy, 'registerTaxonomyContainers']); }
Récupération des valeurs
Les valeurs sont stockées en tant que term meta. Utilisez la fonction WordPress get_term_meta() pour les lire, ou accédez-y depuis un template Twig.
{% for term in post.get_terms('recipe_category') %} <div class="category"> <img src="{{ fn('get_term_meta', term.term_id, '_recipe_category_image', true) }}" alt="{{ term.name }}"> <p>{{ fn('get_term_meta', term.term_id, '_recipe_category_description', true) }}</p> </div> {% endfor %}
Le nom de la meta est automatiquement préfixé par un underscore _ par Carbon Fields. Pensez-y lors de vos appels à get_term_meta().
Bonnes pratiques
- Nommage : Utilisez des préfixes pour éviter les conflits (ex:
recipe_pour une taxonomie de recettes)
Exemple complet
Les méthodes public dans une classe de post type sont appelées automatiquement lors de l'initialisation du post type. Il n'est donc pas nécessaire de les appeler manuellement.
class Recipe extends PostType { public function __construct() { // Code du constructeur... } public function setupRecipeCategories() { $this->addTaxonomy('recipe_category', 'Catégories de recettes') ->isFemale() ->setLabels([ 'plural' => 'catégories', 'singular' => 'catégorie', ]) ->register(); } public function setupRecipeTags() { $this->addTaxonomy('recipe_tag', 'Étiquettes') ->isFemale() ->register(); } }