web-dev-qa-db-fra.com

Taxonomie de type de message personnalisé séparée par virgule

J'ai essayé de comprendre comment séparer les taxonomies de type courrier personnalisé.

$terms = get_the_terms( $post->ID , array( 'commitments', 'type' ) );
foreach ( $terms as $term ) {
    $term_link = get_term_link( $term, array( 'commitments', 'type' ) );
        if( is_wp_error( $term_link ) )
        continue;
        echo '<a href="' . $term_link . '">' . $term->name . '</a>';
}

Chaque taxonomie montre correctement. Cependant, je ne peux pas les séparer en virgule. il montre "TaxonomyATaxonomyB" mais je veux le montrer comme "TaxonomyA, TaxonomyB"

Comment faire? ou y a-t-il un autre moyen?

Merci!

2
MightyGas

Vous pouvez utiliser un compteur pour déterminer si vous devez ajouter une virgule ou non:

$terms = get_the_terms( $post->ID , array( 'commitments', 'type' ) );
// init counter
$i = 1;
foreach ( $terms as $term ) {
    $term_link = get_term_link( $term, array( 'commitments', 'type' ) );
        if( is_wp_error( $term_link ) )
        continue;
        echo '<a href="' . $term_link . '">' . $term->name . '</a>';
        //  Add comma (except after the last theme)
        echo ($i < count($terms))? ", " : "";
        // Increment counter
        $i++;
}
5
Dexter0015

Ou vous pouvez utiliser la fonction get_the_term_list .

<?php echo get_the_term_list( $post->ID, 'commitments', '', ', ' ); ?>
3
99teko

Le moyen le plus propre (IMO) de faire quelque chose comme cela en PHP est de construire un tableau et de l'imploser ensuite:

$list = [];
foreach ( $terms as $term ) {
    $term_link = get_term_link( $term /* no need for taxonomy arg if $term is an object */ );
    if ( ! is_wp_error( $term_link ) )
        $list[] = $term_link;
}

echo implode( ', ', $list );
1
TheDeadMedic