Функция TERM_IS_ANCESTOR_OF() в WordPress 3.4.0: использование и примеры

Функция TERM_IS_ANCESTOR_OF() │ WP 3.4.0

Функция term_is_ancestor_of() используется для проверки, является ли один термин родителем другого. Вы можете использовать как идентификатор (ID), так и объект термина для обоих параметров.

Кто использует эту функцию?

Функцию term_is_ancestor_of() использует, в частности, cat_is_ancestor_of().

Скорость выполнения

  • 1 раз — 0.000142 секунды (очень быстро)
  • 50000 раз — 0.87 секунды (очень быстро)

Возвращаемое значение

Функция возвращает true (истина) или false (ложь). Возвращает true, если $term2 является дочерним термином для $term1.

Использование функции

Для использования этой функции, необходимо передать три параметра:

term_is_ancestor_of( $term1, $term2, $taxonomy );
  • $term1 (int|object) (обязательный) — ID или объект, который вы хотите проверить на предмет родительского термина.
  • $term2 (int|object) (обязательный) — дочерний термин.
  • $taxonomy (string) (обязательный) — название таксономии, к которой принадлежат $term1 и $term2.

Примеры использования

Пример 1: Проверка взаимосвязи элементов таксономии

Допустим, у нас есть пользовательская таксономия my_tax, и термин с ID 5 является дочерним для термина с ID 1. Нужно проверить, действительно ли это так:

if (term_is_ancestor_of(1, 5, 'my_tax')) {
    echo 'Термин 5 является дочерним для термина 1';
}

Пример 2: Контент для всей ветви терминов

Этот пример полезен, когда вы хотите вывести определённый контент для всей ветви терминов. Например, когда вам нужно вывести контент для всех дочерних терминов определенного термина (ID=4).


    
    

История изменений

  • С версии 3.4.0 — функция была введена.

Код функции

Вот как выглядит код функции term_is_ancestor_of():


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 );

}

Связанные функции

Вот некоторые функции, которые могут быть вам полезны:

  • cat_is_ancestor_of()
  • category_exists()
  • comments_open()
  • email_exists()
  • has_block()
  • is_category()
  • is_tag()
  • term_exists()

Этот список не полный, но должен помочь вам в работе с таксонами и терминами в WordPress.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *