我有一个函数,可以显示帖子的指定层次级别类别。例如<?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."";
}
}
}
}
}
最合适的回答,由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
.