Je cherche un moyen de lister tous les termes d'une taxonomie personnalisée. Seuls les termes associés à des publications doivent comporter des liens vers la page d'archive. S'il n'y a pas de messages attachés, il ne devrait montrer que les noms.
Des idées? Merci!
<?php
$taxonomy = 'cat';
$queried_term = get_term_by( 'slug', get_query_var($taxonomy) );
$terms = get_terms($taxonomy);
if ( $terms !== 0 ) {
foreach ( $terms as $term ) {
echo $term->name . ", ";
}
}
if ( $terms > 0 ) {
foreach ( $terms as $term ) {
echo '<li><a href="' . $term->slug . '">' . $term->name .'</a></li>';
}
}
?>
Je n'ai pas bien compris votre question, mais essayez ceci. L'explication est dans les commentaires.
// your taxonomy name
$tax = 'post_tag';
// get the terms of taxonomy
$terms = get_terms( $tax, [
'hide_empty' => false, // do not hide empty terms
]);
// loop through all terms
foreach( $terms as $term ) {
// if no entries attached to the term
if( 0 == $term->count )
// display only the term name
echo '<h4>' . $term->name . '</h4>';
// if term has more than 0 entries
elseif( $term->count > 0 )
// display link to the term archive
echo '<h4><a href="'. get_term_link( $term ) .'">'. $term->name .'</a></h4>';
}
J'espère que cela vous a aidé.
Merci de votre aide! J'ai fait quelques petits ajustements et je le fais maintenant:
<?php
// your taxonomy name
$tax = 'cat';
// get the terms of taxonomy
$terms = get_terms( $tax, $args = array(
'hide_empty' => false, // do not hide empty terms
));
// loop through all terms
foreach( $terms as $term ) {
// Get the term link
$term_link = get_term_link( $term );
if( $term->count > 0 )
// display link to term archive
echo '<a href="' . esc_url( $term_link ) . '">' . $term->name .'</a>';
elseif( $term->count !== 0 )
// display name
echo '' . $term->name .'';
}
?>
C'est bien!
Seule une amélioration du commentaire de Schakelen à tester si quelque chose est retourné
// your taxonomy name
$tax = 'cat';
// get the terms of taxonomy
$terms = get_terms( $tax, $args = array(
'hide_empty' => false, // do not hide empty terms
));
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
// loop through all terms
foreach( $terms as $term ) {
// Get the term link
$term_link = get_term_link( $term );
if( $term->count > 0 )
// display link to term archive
echo '<a href="' . esc_url( $term_link ) . '">' . $term->name .'</a>';
elseif( $term->count !== 0 )
// display name
echo '' . $term->name .'';
}
}