Php 回声内爆

Php 回声内爆,php,wordpress,echo,implode,taxonomy-terms,Php,Wordpress,Echo,Implode,Taxonomy Terms,我有以下代码片段来获取本文中可用的分类法的所有术语 $tags = get_the_terms( $post->ID, 'books' ); if( $tags ) : ?> <div class="listing-tag-list"> <?php foreach( $tags as $tag ) : $tag_link = esc_url( get_term_link( $tag ) ); $tag_output

我有以下代码片段来获取本文中可用的分类法的所有术语

$tags = get_the_terms( $post->ID, 'books' );

if( $tags ) : ?>

<div class="listing-tag-list">

    <?php foreach( $tags as $tag ) :

        $tag_link = esc_url( get_term_link( $tag ) );

        $tag_output = '';
        $tag_output .= '<a href="' . $tag_link . '" class="listing-tag">';

        $tag_output .= '<span class="tag__text">' . $tag->name . '</span></a>';

        echo $tag_output;

        endforeach; ?>

 </div>

 <?php endif;
$tags=获取术语($post->ID,'books');
如果($tags):?>

为什么不直接将其添加到循环中呢

    $tag_output = '';
    $tag_output .= '<a href="' . $tag_link . '" class="listing-tag">';

    $tag_output .= '<span class="tag__text">' . $tag->name . '</span></a>';

    $tag_output .=", ";
    echo $tag_output;

简单易行的解决方案:

<?php echo get_the_terms_list( $post_id, 'books', '<div class="listing-tag-list">', ', ', '</div>' );?>

循环外的确切位置是什么?
rtrim($tag_output,“,”)应该在什么地方坐?你能把它作为一个完整的代码添加到你的答案中吗?
<?php echo get_the_terms_list( $post_id, 'books', '<div class="listing-tag-list">', ', ', '</div>' );?>
<?php

$tags = get_the_terms( $post->ID, 'books' );
if( ! is_wp_error( $tags ) ){
    $links = array();

    foreach ( $tags as $tag ) {
        $link = get_term_link( $tag, $tag );
        $links[] = '<a href="' . esc_url( $link ) . '" rel="tag" class="listing-tag"><span class="tag__text">' . $tag->name . '</span></a>';
    }

    $before = '<div class="listing-tag-list">';
    $sep = ', ';
    $after = '</div>';
    echo $before . join( $sep, $tag_links ) . $after;
}