Вообще, по хорошему, вам нужно создать для этого дополнительные таксономии, чтобы не смешивать теплое с мягким. Это будет и выглядеть логичнее и управлять будет удобнее
Сейчас вам нужно из массива
get_the_category()
собрать массивы в массиве родительских категорий
$categories = get_the_category();
$out = array();
foreach ( $categories as $key => $category ) {
$out[$category->category_parent][$category->term_id]['title'] = $category->name;
$out[$category->category_parent][$category->term_id]['link'] = get_term_link( $category->term_id, 'category' );
}
foreach ( $out as $keyP => $cats ) {
// пропускаем, если рубрика родительская
if ( $key === 0 )
continue;
echo '<ul class="cats cats-inline">';
foreach ( $cats as $key => $cat ) {
echo '<li class="cats--item"><a href="' . $cat['link'] . '" class="cats--link">' . $cat['title'] . '</a></li>';
}
echo '</ul>';
}
Скорее всего, при выборе рубрик, вы выбираете только дочерние (Albanian, Arabic и т.д.), поэтому родительских категорий в массиве
get_the_category()
не будет. Если для работы они вам нужны, то id родительской категории находится в переменной $keyP. Вы можете получить для них данные с помощью
get_category()
в цикле или предварительно собрать список $ids и получить одним запросом:
$parents = array();
foreach ( $categories as $key => $category ) {
//проверяем, что категория не родительская и ее нет в общем массиве
if ( $category->category_parent !== 0 && !in_array( $category->category_parent, $parents ) ) {
$parents[] = $category->category_parent;
}
}
$args = [
'taxonomy' => 'category',
'include' => $parents,
'fields' => 'id=>name',
];
$terms = get_terms( $args );
Получить значения из итогового массива $terms можно по id в цикле
foreach ( $out as $keyP => $cats ) {
if ( isset( $terms[$keyP] ) ) {
echo $terms[$keyP];
}
}