get_category_parents

Получает список родительских категорий текущей категории. Список выводиться в порядке вложенности.

Можно указать чтобы названия родительских категорий были ссылками на сами категории (нечто вроде хлебных крошек).

Хуков нет.

Возвращает

HTML код, список родительских категорий.

Использование

$cat_parents = get_category_parents( $category, $display_link, $separator, $nice_name );
$category(число)
ID категории, для которой нужно вывести родительские категории. По умолчанию берется ID текущей категории, если удалось определить (определить удается обычно на страницах категорий).
По умолчанию: текущая категория или нет
$display_link(логический)
true – выведет список родительских категорий в виде ссылок на страницы категорий. False – будут выведены названия.
По умолчанию: false
$separator(строка)
Разделитель между названиями.
По умолчанию: ‘/’
$nice_name(логический)
true – выведет альтернативные названия (слаги) категорий (которые используются в УРЛах), а false – выедет реальные названия.
По умолчанию: false

Примеры

#1. Выведем родительские категории категории 10

В виде ссылок разделенных знаком ‘ » ‘. Ссылка на категорию 10 так же будет выведена.

<?php echo get_category_parents( 10, true, ' » '); ?>

#2. Получим самый родительский элемент для указанной таксономии и вложенного элемента

Нам нужно получить первый родительский элемент (корневой термин), который относится к известному вложенному элементу таксономии.

Ответ в вопросе: Как получить элемент таксономии верхнего уровня в котором находится указанная запись (пост)?

Код из


wp-includes/category-template.php

WP 4.7.2

<?php
function get_category_parents( $id, $link = false, $separator = '/', $nicename = false, $visited = array() ) {
	$chain = '';
	$parent = get_term( $id, 'category' );
	if ( is_wp_error( $parent ) )
		return $parent;

	if ( $nicename )
		$name = $parent->slug;
	else
		$name = $parent->name;

	if ( $parent->parent && ( $parent->parent != $parent->term_id ) && !in_array( $parent->parent, $visited ) ) {
		$visited[] = $parent->parent;
		$chain .= get_category_parents( $parent->parent, $link, $separator, $nicename, $visited );
	}

	if ( $link )
		$chain .= '<a href="' . esc_url( get_category_link( $parent->term_id ) ) . '">'.$name.'</a>' . $separator;
	else
		$chain .= $name.$separator;
	return $chain;
}