Taxonomies WordPress : termes, parents, enfants
La création de taxonomies par programme semble être un point qui revient de temps en temps pour ceux qui créent des solutions pour les autres sur WordPress.
Les taxonomies elles-mêmes peuvent même être un peu déroutantes ; cependant, j’ai trouvé que ce qui suit aide généralement à solidifier un peu le concept :
Les taxonomies hiérarchiques sont analogues aux catégories ; les taxonomies non hiérarchiques sont analogues aux balises.
Mais encore, disons que vous créez une solution pour quelqu’un de sorte que vous ayez besoin d’importer des informations en tant que publication et d’y appliquer une taxonomie. En outre, vous souhaitez peut-être également appliquer une taxonomie parente à la publication.
Comment pouvons-nous faire cela?
Taxonomies WordPress: inscription, parents, enfants, etc.
La situation ressemble à ceci :
Vous avez un article auquel une taxonomie sera appliquée. Si la taxonomie a un parent, nous souhaitons également l’appliquer à la publication.
Pour ce faire, nous aurons besoin de quatre (peut-être cinq) fonctions :
J’ajouterai également que je pense que c’est une bonne idée d’utiliser sanitize_title_with_dashes si vous allez utiliser un type de chaîne entrante non désinfectée pour le slug du type de publication (mais ce n’est pas nécessaire si vous n’êtes pas, bien sûr ).
1 Enregistrez la taxonomie
Pour cet exemple, nous allons créer une taxonomie pour un type de publication personnalisé.
Comme cela peut être n’importe quoi sur lequel vous travaillez, je vais utiliser une variable appelée $postType pour démontrer le point.
<?php
register_taxonomy(
'acme-category',
$postType,
[
'label' => 'Acme Categories',
'rewrite' => ['slug' => 'acme-category'],
'capabilities' => [
'manage_terms' => 'manage_options',
'edit_terms' => 'manage_options',
'delete_terms' => 'manage_options',
'assign_terms' => 'manage_options',
],
'hierarchical' => true,
]
);
C’est assez simple mais prenez note de la référence du code :
Une fonction simple pour créer ou modifier un objet de taxonomie en fonction des paramètres donnés. Si vous modifiez un objet de taxonomie existant, notez que la
$object_typevaleur de l’enregistrement d’origine sera écrasée.
Généralement, ce n’est pas un problème, mais si vous travaillez sur une grosse application ou une application préexistante, c’est quelque chose à garder à l’esprit.
2 Insérer un terme pour la taxonomie
Ensuite, supposons qu’un $customPost est mis à votre disposition et qu’il a une fonction pour récupérer son nom, son titre ou une autre propriété utilisée pour l’identifier (autre que son ID).
Cela pourrait être passé dans une fonction, ou il pourrait être rendu disponible par toute utilisation d’autres fonctions fournies par WordPress. Dans cet exemple, je vais utiliser une fonction getName() sur l’ objet $customPost .
<?php
$termInfo = wp_insert_term(
$customPost->getName(),
'acme-category',
['slug' => sanitize_title_with_dashes($customPost->getName())]
);
Notez que je lis également le résultat de la fonction dans une variable $termInfo. Nous l’utiliserons à l’étape suivante pour rechercher le parent s’il existe et l’appliquer également à notre objet de publication personnalisé.
3 Rechercher le parent d’un terme
Ici, nous utiliserons le terme que nous venons de créer pour voir s’il existe un parent pour celui-ci. Notez que s’il renvoie false, alors la taxonomie n’existe pas (ou si le terme n’est pas trouvé).
À cette fin, vous voudrez ajouter une condition à votre code pour le créer, si nécessaire. Pour garder le code concis, cependant, je l’omets dans le code suivant :
<?php
$parentTermInfo = get_term_by(
'term_taxonomy_id',
$termInfo['term_taxonomy_id'],
'acme-category',
ARRAY_A
);
Remarquez que je stocke le résultat du code ci-dessus dans une variable $parentTermInfo. C’est ainsi que nous pouvons transmettre ceci à notre fonction finale pour appliquer les informations parent à notre objet de publication.
4 Appliquer le terme à une publication
Enfin, nous appliquerons le terme (ou les termes) s’il existe un objet parent. Rappelez-vous que c’est là que le conditionnel sera nécessaire. En termes simples, s’il n’y a pas de parent, la valeur $parentTermInfo[‘parent’] ne sera pas nécessaire.
Mais pour le code ci-dessous, nous supposons que nous l’avons.
<?php
wp_set_object_terms(
$customPost->getId(),
[
$parentTermInfo['parent'],
$termInfo['term_id'],
],
'acme-category',
true
);
À partir de la référence de code, notez que cela créera le terme s’il n’existe pas déjà ; sinon, il utilisera ce qui est déjà défini et l’appliquera au message.
Et.. Voila
D’une manière générale, ce n’est pas beaucoup de travail. Cela permet de s’assurer que vous avez une compréhension claire du fonctionnement des taxonomies et de leurs termes. De plus, il est également utile de savoir comment récupérer le parent d’un terme donné si c’est ce que vous voulez faire (sinon, la troisième étape n’est pas nécessaire).
Mais j’espère que les liens et le code ci-dessus vous fourniront tout ce dont vous avez besoin pour créer une taxonomie et l’appliquer à un article (ainsi qu’à un terme parent, si nécessaire).

