На самом деле определить это достаточно просто. К примеру, если мы находимся на странице архивов / archive постов (где срабатывают хуки is_archive, is_tag, пр.). Мы можем прибегнуть к следующему способу:
add_action('wp', function() { $Term = get_queried_object(); if(is_a($Term, 'WP_Term')) { if($Term -> parent > 0) { echo 'Категория, тег или термин является дочерним'; } } });
Функция “get_queried_object()”, содержит в себе динамические данные, т.е. данные которые зависят от той странице, на которой мы находимся на текущий момент. Если это страница поста, то ф-я вернет объект “WP_Post”, с данными поста. Если это страница архива (категории, термина, или тега), то ф-я get_queried_object() будет содержать объект “WP_Term”. В некоторых случаях функция содержит объект post_type.
Вернемся к коду выше. По свойству термина “parent”, мы можем определить, за каким другим термином закреплен текущий. Если “parent” равен нулю, значит текущий термин находится в корне. Если “parent” больше нуля, следовательно он вложен в какой-то другой термин, и является по отношению к нему дочерним.
Выше мы рассмотрели случай, когда находимся на странице категории, пр. А что если нам нужно определить родителя произвольного темрина? скажем по ID или slug/слагу темрина?
Для этих целей мы можем воспользоваться ф-ией get_term_by().
Это полезная ф-я, используя которую мы можем определить данные любого термина по его id/slug/name/term_taxonomy_id. К примеру, получим данные термина по его ID:
$Term = get_term_by(‘id’, 123, ‘category’);
как вы уже догадались, третьим параметром идет название таксономии к которой принадлежит термин.
Аналогичным образом получим данные термина по слагу:
$Term = get_term_by(‘slug’, ‘test-term’, ‘category’);
После того как мы получили данные термина, мы делаем проверку на тип объекта и родителя:
if(is_a($Term, 'WP_Term')) { if($Term -> parent > 0) { echo 'Категория, тег или термин является дочерним'; } }
вот и все :))