获取不带父类别的帖子类别,但显示其他非父子类别


Get post categories without parent category, but show other non parent-child 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 1出去,Cat 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都是自己的父类别。

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

谢谢。

您可以使用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>';
    }
}