term_is_ancestor_of

Проверяет является ли второй термин дочерним к первому (проверяются все уровни вложенности). Условный тег.

Вернет true если указанный в первом параметре термин, является родительским по отношению ко второму. Будут проверяться все уровни вложенности.

✈ 1 раз = 0.000142с = быстро | 50000 раз = 0.87с = очень быстро PHP 7.0.14, WP 4.7

Хуков нет.

Возвращает

true или 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
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 );
}