Получить родительскую категорию верхнего уровня

25 апр. 2015 г., 15:23:50
Просмотры: 13.7K
Голосов: 5

Моя структура категорий выглядит следующим образом:

- Категория верхнего уровня
---- Подкатегория 1
------- Подподкатегория 1.1
------- Подподкатегория 1.2
------- Подподкатегория 1.3
---- Подкатегория 2
------- Подподкатегория 2.1
------- Подподкатегория 2.2
------- Подподкатегория 2.3

Я нахожусь в записи под 1.2, так что путь будет:

Категория верхнего уровня -> Подкатегория 1 -> Подподкатегория 1.2 -> Текущая запись

Примечание: В записи выбраны ТОЛЬКО "Подкатегория 1" и "Подподкатегория 1.2" ("Категория верхнего уровня" не отмечена).

Теперь, как мне получить slug Категории верхнего уровня ("top-category"), двигаясь в обратном направлении?

Спасибо!

0
Все ответы на вопрос 2
0

get_ancestors() возвращает массив, содержащий родительские элементы для любого заданного объекта.

В этом примере есть две категории. Родительская категория с ID 447 и дочерняя категория с ID 448. Функция возвращает иерархию категорий (с ID):

get_ancestors( 448, 'category' );

возвращает:

Array
(
    [0] => 447
)

Страница Codex для get_ancestors

22 дек. 2015 г. 01:16:26
0

get_ancestors()

Это правильный способ получить все родительские категории для конкретной категории в иерархическом порядке. Чтобы получить категорию самого верхнего уровня, можно извлечь последний элемент возвращаемого массива, как показано ниже:

// получение всех родительских категорий
$ancestor_cat_ids = get_ancestors( $queried_cat_id, 'category');

// получение последнего элемента массива идентификаторов, возвращаемого функцией get_ancestors()
$highest_ancestor = $ancestor_cat_ids[count($ancestor_cat_ids) - 1];
20 сент. 2019 г. 10:28:23