term_is_ancestor_of()
Проверяет, является ли второй термин дочерним к первому (проверяются все уровни вложенности). Условный тег.
Вернет true если указанный в первом параметре термин, является родительским по отношению ко второму. Будут проверяться все уровни вложенности.
Заметки
-
Функция сработает, если второй термин будет дочерним к первому;
-
Результат true будет возвращен даже если $term2 вложена в $term1 через несколько терминов (многоуровневая проверка вложенности);
- Передаваемый параметр должен быть либо числом либо объектом. Если передана строка в виде числа, то функция вернет false.
Хуков нет.
Возвращает
true|false
.
- true — когда $term1 родственный термин к термину $term2.
- false — когда не родственный.
Использование
if( term_is_ancestor_of( $term1, $term2, $taxonomy ) ){ // есть зависимость }
- $term1(число/объект) (обязательный)
- ID или объект, который должен быть родительским термином.
- $term2(число/объект) (обязательный)
- Дочерний термин.
- $taxonomy(строка) (обязательный)
- Название таксономии которым принадлежат указанные в $term1 и $term2 термины.
Примеры
#1 Проверка родственности элемента таксономии
Предположим, что у нас есть пользовательская древовидная таксономия my_tax
и в ней термин с ID 5 является дочерним к термину с ID 1. Тогда это условие будет справедливым:
if( term_is_ancestor_of( 1, 5, 'my_tax') ){ echo 'Термин 4 - это дочерний термин к термину 1'; }
#2 Контент для всей ветки терминов
Этот пример полезен, нужно вывести определенны контент для всей ветки терминов. Т.е., когда нужно вывести контент для любых дочерних терминов к указанному и для указанного термина (ID=4).
Код ниже проверяет используется ли термин Music (ID 4) из таксономии Sound и если это этот термин или любой его дочерний, то выводится меню, с помощью функции wp_nav_menu():
<?php // $term - это текущий просматриваемый термин. // Его можно получить так, если нужно: // $term = get_term_by( 'slug', get_query_var('term'), 'sound'); if (term_is_ancestor_of(4, $term, 'sound') or is_term(4, 'sound')){ ?> <div id="music_subnav_menu" class="subnav_menu"> <?php wp_nav_menu( array('menu' => 'Music' )); ?> </div> <? } ?>
Список изменений
С версии 3.4.0 | Введена. |
Код term_is_ancestor_of() term is ancestor of WP 6.8
function term_is_ancestor_of( $term1, $term2, $taxonomy ) { if ( ! isset( $term1->term_id ) ) { $term1 = get_term( $term1, $taxonomy ); } if ( ! isset( $term2->parent ) ) { $term2 = get_term( $term2, $taxonomy ); } if ( empty( $term1->term_id ) || empty( $term2->parent ) ) { return false; } if ( $term2->parent === $term1->term_id ) { return true; } return term_is_ancestor_of( $term1, get_term( $term2->parent, $taxonomy ), $taxonomy ); }