term_is_ancestor_of() — проверяет, является ли элемент таксономии родительским для другого конкретного элемента

Одним словом функция возвращает true, если первый указанный элемент таксономии $term1 является родительским для второго указанного элемента $term2 (не важно, на каком уровне вложенности он находится), если же это условие не выполняется, данный условный тег возвращает false.

term_is_ancestor_of( $term1, $term2, $taxonomy )
$term1
(целое|объект WP_Term) – ID или объект родительского элемента таксономии.
$term2
(целое|объект WP_Term) – дочерний элемент таксономии.
$taxonomy
(строка) Название таксономии

Пример с рубриками

Пример для рубрик, кстати, для них есть отдельная функция cat_is_ancestor_of().

if ( term_is_ancestor_of( 1, 4, 'category') ){
	echo 'Рубрика с ID = 4 является дочерней для рубрики с ID = 1';
}

Пример с категориями товаров WooCommerce

Как известно, у меток post_tag нет иерархии (если только вы не модифицировали эту таксономию), а следовательно нет родительских и дочерних элементов, поэтому рассмотрим какую-нибудь произвольную таксономию, например product_cat (буду для удобства называть элементы этой таксономии категориями).

Суть следующего примера в том, чтобы выводить описание категории только для тех элементов, которые не являются дочерними элемента с ID = 4.

// заданный родительский элемент
$term1_id = 4;
 
// теперь нам нужно вытащить ID или объект текущей категории
$term2_obj = get_term_by( 'slug', get_query_var( 'term' ), 'product_cat' );
 
if ( ! term_is_ancestor_of( $term1_id, $term2_obj, 'product_cat') ){
	term_description( $term2_obj->term_id, 'product_cat' ); // выводим описание
}

Пример с проверкой нахождения на родительской или любой её дочерней категории

При помощи функций is_tax(), get_queried_object_id() и term_is_ancestor_of() мы можем легко проверить, если мы находимся на определённой родительской категории или любой её дочерней категории:

$category_id_to_check = 5;
 
if( 
	is_tax( 'category', $category_id_to_check ) 
	|| term_is_ancestor_of( $category_id_to_check, get_queried_object_id(), 'category' )
) {
	// выполняем какие-то действия
}

Миша

Недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Комментарии — 4

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.