Toutes mes excuses mais je ne sais pas trop comment titrer ce billet. Lorsque mes taxonomies personnalisées sont recherchées, rien ne s'affiche après "Posté dans". Je ne sais pas comment s'y prendre pour l'ajouter aux catégories php ci-dessous.
Toute aide est très appréciée, je pense avoir besoin d’une déclaration if/else?
<p class="post-info"><?php the_time('F j, Y'); ?> | by <a href="<?php echo get_author_posts_url(get_the_author_meta('ID')); ?>"><?php the_author(); ?></a> | Posted in
<?php
$categories = get_the_category();
$separator = ", ";
$output = '';
if ($categories) {
foreach ($categories as $category) {
$output .= '<a href="' . get_category_link($category->term_id) . '">'
. $category->cat_name . '</a>' . $separator;
}
echo trim($output, $separator);
}
?>
</p>
get_the_terms()
est la fonction dont vous avez besoin pour obtenir les termes d'une taxonomie personnalisée associée à votre message.
Il est similaire (mais pas identique) à get_the_category()
pour la taxonomie de catégorie par défaut.
[Edité pour répondre au premier commentaire ci-dessous]
En adaptant le code que vous avez pour les catégories, voici comment afficher des catégories ou des termes:
<?php
$categories = get_the_category();
$separator = ", ";
$output = '';
if ($categories) {
foreach ($categories as $category) {
$output .= '<a href="' . get_category_link($category->term_id) . '">'
. $category->cat_name . '</a>' . $separator;
}
echo trim($output, $separator);
}
elseif ( $terms = get_the_terms( get_the_ID(), 'my-custom-taxonomy' ) ) {
foreach ( $terms as $term ) {
$output .= '<a href="' . get_term_link( $term, 'my-custom-taxonomy' ) . '">'
. $term->name . '</a>' . $separator;
}
echo trim( $output, $separator );
}
?>
N'oubliez pas de remplacer 'my-custom-taxonomy'
(deux fois) par le slug réel de votre taxonomie.
Notez qu'en utilisant cette structure if/else, si une publication a à la fois une catégorie et un terme de la taxonomie personnalisée, seule la catégorie sera affichée. On peut simplement changer la elseif
en juste if
au cas où ils voudraient que les deux soient affichés dans un tel cas.
Références: