如何用逗号分隔类别?

时间:2018-11-25 作者:Pete

我有一个函数,可以显示帖子的指定层次级别类别。例如<?php display_cat_level(0,true); ?> 将显示顶部/父类别,而<?php display_cat_level(2,true); ?> 将显示第二个子类别。

如果帖子在任何给定级别中有多个类别,那么这些类别将以内联方式显示,它们之间没有空格或逗号,如下所示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."";
                }
            }
        }
    }
}

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

您所要做的就是跟踪您是否已经重复了某个类别,并在这种情况下添加逗号:

function get_level($category, $level = 0) {
    if ($category->parent == 0) {
        return $level;
    }

    $category = get_term( $category->parent );
    return get_level( $category, $level + 1 );
}

function 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 ) {
                    echo \', \';
                }
                if ( true == $link ) {
                    echo \'<a href="\' . get_term_link( $cat->term_id ) . \'">\' . esc_html( $cat->name ) . "</a>";
                } else {
                    echo esc_html( $cat->name );
                }
                $echoed++;
            }
        }
    }
}
另外,我还简化了您的get_level 函数并在中添加了一些html转义display_cat_level.

结束