Wordpress - эхо взорваться - PullRequest
       8

Wordpress - эхо взорваться

0 голосов
/ 02 сентября 2018

У меня есть следующий фрагмент, чтобы взять все условия таксономии, доступные для поста.

$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;

Моя проблема в том, что в настоящее время термины отображаются в строке без пробела.

Как их разделить пробелом и запятой?

Я пытался использовать implode и поэтому заменил echo $tag_output; на echo implode( ', ', $tag_output );, но я не могу вписать его в текущий код.

Куда я иду не так?

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Простое и простое решение:

<?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;
}
0 голосов
/ 02 сентября 2018

Почему бы не добавить его прямо в ваш цикл

    $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;

А за пределами цикла удалите последнюю запятую

    rtrim($tag_output,', ');
...