J'ai une taxonomie personnalisée appelée "pays". Comment puis-je obtenir chaque terme (pays) avec le nombre de publications publiées entre parenthèses, comme suit:
Avec le code suivant, le nombre de termes de la taxonomie "pays" est affiché:
$countries_count = wp_count_terms( 'countries' );
echo $countries_count;
Mais je sais juste que ce n’est que le point de départ de mon problème. Aucune suggestion?
Vous pouvez utiliser get_terms
pour obtenir la liste de tous les termes associés à une taxonomie. Une fois que vous avez tous les termes séparés, vous pouvez utiliser $term->name
pour afficher le nom du terme et $term->count
pour récupérer le nombre de publications à l'intérieur de ce terme spécifique.
Voici une version légèrement modifiée du code contenu dans le codex. Vous pouvez ensuite modifier la sortie selon vos besoins
<?php
$terms = get_terms('countries');
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
echo '<ul>';
foreach ( $terms as $term ) {
echo '<li>' . $term->name . ' (' . $term->count . ')' . '</li>';
}
echo '</ul>';
}
?>
EDIT
Grâce à @Traveler, voici une autre version de mon code si vous souhaitez que les liens soient cliquables.
<?php
$terms = get_terms('countries');
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
echo '<ul>';
foreach ( $terms as $term ) {
$term = sanitize_term( $term, 'countries' );
$term_link = get_term_link( $term, 'countries' );
echo '<li><a href="' . esc_url( $term_link ) . '">' . $term->name . ' (' . $term->count . ')' . '</a></li>';
}
echo '</ul>';
}
?>
Vous pouvez l'essayer avec WP Query. Je ne l'ai pas encore testée, alors faites-le-moi savoir si cela fonctionne.
$query = new WP_Query( array( 'taxonomy' => 'term', 'posts_per_page' => -1 ) );
$count = $query->post_count;
Je ne peux pas tester cela pour le moment, mais essayez d'obtenir tous les termes pour "pays", puis parcourez-les et obtenez le wp_count_terms pour chacun d'entre eux.
$terms = get_terms("countries");
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
echo "<ul>";
foreach ( $terms as $term ) {
$args = array( 'slug' => $term->slug, );
echo "<li>" . $term->name . "(" . wp_count_terms('countries', $args) . ")</li>";
}
echo "</ul>"; }