2016-03-15 3 views
0

Некоторые из моих категорий имеют родительские категории, а некоторые нет. Мне нужен способ показать только категории без родительских и дочерних категорий.Получить категории сообщений без родительской категории, но показать другие категории, не относящиеся к родительскому ребенку

Так, например, у меня есть

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

И мой пост имеет Cat 1, Cat 3 и Cat 3.1 на ней (причины PermaLink - Мне нужно установить родительскую категорию, а). При этом:

$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_outCat 1, Cat 3 и Cat 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 все родительские категории к себе.

Есть ли способ показать только подкатегории существующей родительской категории и других категорий, не относящихся к родительскому ребенку, в списке категорий?

Спасибо.

ответ

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>'; 
    } 
} 
Смежные вопросы