获取没有父类别的帖子类别,但显示其他非父子类别

时间:2016-03-15 13:27:34

标签: php wordpress categories

我的一些类别有父类别,有些没有。我需要的是一种只显示没有父类和子类别的类别的方法。

所以例如我有

Cat 1
Cat 2 
Cat 3
 - Cat 3.1
 - Cat 3.2
Cat 4
Cat 5

我的帖子上有Cat 1Cat 3Cat 3.1(固定链接原因 - 我也需要设置父类别)。有了这个:

$category_out=array();
$categories = get_the_category();
foreach ($categories as $category_one) {
    $category_out[] ='<a class="' .$category_one->slug.'" href="'.esc_url( get_category_link( $category_one->term_id ) ).'">' .$category_one->name.'</a>';
}
$category_out = implode( '', $category_out);

我会在我的$category_out Cat 1Cat 3Cat 3.1中退出。而且我不会Cat 3进入名单。

我试过

$category_out=array();
$categories = get_the_category();
foreach ($categories as $category_one) {
    if ($category_one->category_parent != 0) {
        $category_out[] ='<a class="' .$category_one->slug.'" href="'.esc_url( get_category_link( $category_one->term_id ) ).'">' .$category_one->name.'</a>'
    }
}
$category_out = implode( '', $category_out);

但这仅显示Cat 3.1,因为从技术上讲,Cat 1-5都是自己的父类别。

是否有办法在类别列表中仅显示现有父类别和其他非父子相关类别的子类别?

感谢。

1 个答案:

答案 0 :(得分:0)

你可以使用get_term_children来实现这个目标!

循环:

foreach ($categories as $category_one) {
    if (empty(get_term_children($category_one->term_id,$category_one->taxonomy))){
    $category_out[] ='<a class="' .$category_one->slug.'" href="'.esc_url( get_category_link( $category_one->term_id ) ).'">' .$category_one->name.'</a>';
    }
}