J'ai cherché google mais je suis vraiment confus. J'essaie d'afficher les termes de la taxonomie attribuée au poste. J'utilise the_terms($post->ID, 'locations');
. La taxonomie personnalisée est hiérarchique.
Exemple: 3 termes affectés à poster: USA(parent) > FL(direct child of "USA") > Miami(direct child of "FL")
. Ce que je reçois: FL, Miami, USA
qui signifie que les termes sont affichés par ordre alphabétique. Je veux qu'ils soient affichés comme: Miami, FL, USA
. Cela peut-il être réalisé? Je voudrais aussi supprimer les ancres des termes et strip_tags(the_terms($post->ID, 'locations'))
ne semble pas fonctionner.
Lors de la recherche sur Google, certaines personnes utilisent get_terms()
_ un autre get_the_terms
et d’autres the_terms
, c’est ce que j’utilise et qui semble fonctionner - affiche les termes. Quelle est la différence entre ces fonctions? Est-ce que j'utilise le bon?
Pour répondre à votre première question
Quelle est la différence entre ces fonctions
get_terms()
retourne un tableau d'objets termes appartenant à une taxonomie spécifique
get_the_terms()
retourne un tableau de termes appartenant à un post
the_terms()
affiche une chaîne de mise en forme HTML des noms de termes appartenant à un message
Parce que vous avez besoin que vos termes ne soient pas liés par un lien hypertexte et ordonnés en fonction du parent, je crois que wp_get_object_terms()
sera une meilleure option ici. wp_get_object_terms()
renvoie également un tableau de termes appartenant à une publication, mais est plus flexible. Vous payez pour cette flexibilité, cependant, car vous effectuez un appel supplémentaire de base de données par publication.
Ceci dit, vous pouvez essayer les solutions suivantes: ( Tout le code n’a pas été testé )
$args = [
'orderby' => 'parent',
'order' => 'DESC'
];
$terms = wp_get_object_terms( $post->ID, 'locations', $args );
$names = wp_list_pluck( $terms, 'name' );
$output = implode( ', ', $names );
echo $output;