Как разделить категории запятыми?

У меня есть эта функция, которая отображает указанную категорию уровня иерархии поста. Например, & lt;? Php display_cat_level (0, true); ? & gt; отобразит верхнюю /родительскую категорию, а & lt;? php display_cat_level (2, true); ? & gt; отобразит вторую дочернюю категорию.

Если сообщение имеет более одной категории на любом заданном уровне, то категории будут отображаться внутри строки без пробелов или запятых между ними, как этот cat1acat1bcat1c вместо cat1a, cat1b, cat1c . Как бы я обновил функцию, чтобы разделить запятую несколько отображаемых категорий?

function get_level($category, $level = 0){    if ($category->parent == 0) {        return $level;    } else {        $level++;        $category = get_term( $category->parent );        return get_level($category, $level);    }}function display_cat_level( $level = 0 , $link=false){    $cats = get_the_terms( null, 'category' );    if( $cats ){        foreach($cats as $cat){            $current_cat_level = get_level($cat);            if( $current_cat_level  == $level ){                if($link==true) {                    echo '<a href="'.get_term_link( $cat->term_id ).'">'.$cat->name."</a>";                } else {                    echo $cat->name."";                }            }        }    }}

Ответы и комментарии:

Все, что вам нужно сделать, это отслеживать, если вы уже повторили какую-то категорию и добавить запятую в таком случае:
function get_level ($ category, $ level = 0) {
    if ($ category-> parent == 0) {
        вернуть уровень $;
    }

    $ category = get_term ($ category-> parent);
    return get_level ($ категория, $ уровень + 1);
}

функция display_cat_level ($ level = 0, $ link = false) {
    $ cats = get_the_terms (null, 'category');
    $ echoed = 0;

    if ($ cats) {
        foreach ($ cats as $ cat) {
            $ current_cat_level = get_level ($ cat);
            if ($ current_cat_level == $ level) {
                if ($ echoed) {
                    эхо ',';
                }
                if (true == $ link) {
                    echo ' '. esc_html ($ cat-> name). "";
                } еще {
                    echo esc_html ($ cat-> name);
                }
                $ Вторит ++;
            }
        }
    }
}

PS. Я также немного упростил вашу функцию get_level и добавил html-экранирование в display_cat_level.
Создан 25-11-2018 08:03 Krzysiek Dróżdż13.1k52740