cat_is_ancestor_of() — является ли указанная категория родительской для другой указанной категории

Функция возвращает true, если $cat1 является родительской рубрикой для $cat2 (вне зависимости от уровня вложенности), возвращает false в обратном случае, а также, если в аргументах функции неправильно задан тип (строки не поддерживаются).

cat_is_ancestor_of( $cat1, $cat2 )
$cat1
(целое число|объект) ID или объект рубрики, здесь нужно указать родительскую рубрику
$cat2
(целое число|объект) ID или объект рубрики, здесь нужно указать дочернюю рубрику

Пример

if ( cat_is_ancestor_of(1, 4) ){
	echo 'Категория с ID = 4 является дочерней для категории с ID = 1';
}

Миша

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

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

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

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

  • Наталия 21 июня 2015 #

    А как можно проверить является ли категория дочерней по отношению к какой-нибудь другой без конкретных ID?

    Мне это нужно для вывода заголовков архивных страниц. Сейчас архивная страница любой категории имеет заголовок "Рубрика такая-то". А нужно, чтобы в случае, если категория дочерняя заголовок был "Подрубрика такая-то".

    Формируются заголовки в шаблоне archive.php кодом:

    if ( is_category() ) : single_term_title( '<span class="title-regular">Рубрика: </span>' );

    Как сформулировать условие if категория имеет родительскую?

    • Миша 21 июня 2015 #

      Получение ID текущей рубрики:

      $cat_ID = get_query_var('cat');
      • Наталия 21 июня 2015 #

        Я попробовала:

        if ( cat_is_ancestor_of( $cat_ID, $cat_ID) ) : 
        single_term_title( '<span class="title-regular">Подрубрика: </span>' );

        Не работает.

        • Миша 22 июня 2015 #
          $cat_ID = get_query_var('cat');
          $category = get_category( $cat_ID );
          if( $category->parent ) {
          // подрубрика
          } else {
          // не подрубрика
          }

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

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