Получение дочерних элементов термина (GET_TERM_CHILDREN())

# Получение дочерних элементов термина (GET_TERM_CHILDREN())

Функция get_term_children() объединяет всех дочерних терминов в один массив их идентификаторов. Эта рекурсивная функция полезна только для иерархических таксономий.

Если термина не существует в заданной таксономии, функция вернёт пустой массив.

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

Функц��я возвращает массив идентификаторов терминов или объект WP_Error, если таксономия не существует.

## Применение

```php
get_term_children( $term_id, $taxonomy );

Параметры

  • $term_id (int) — обязательный параметр, идентификатор термина, для которого нужно получить дочерние элементы.
  • $taxonomy (string) — обязательный параметр, название таксономии.

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

Пример 1: Получение и отображение дочерних терминов

Предположим, мы хотим отобразить названия дочерних секций термина с идентификатором 10 в виде ссылок на соответствующие страницы архивов:

$term_id = 10; // ID текущей категории (можно получить динамически)
$tax_name = 'products'; // Название таксономии
$term_childs = get_term_children( $term_id, $tax_name );

echo '
    '; foreach ( $term_childs as $child ) { $term = get_term_by( 'id', $child, $tax_name ); // Получаем термин по ID echo '
  • ' . esc_html( $term->name ) . '
  • '; } echo '
';

Результат выполнения кода

При выполнении данного кода на экран будет выведен следующий HTML:

Хронология изменений

  • С версии 2.3.0 функция была добавлена в WordPress.

Код функции get_term_children()

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


function get_term_children( $term_id, $taxonomy ) {
if ( ! taxonomy_exists( $taxonomy ) ) {
return new WP_Error( 'invalid_taxonomy', __( 'Недействительная таксономия.' ) );
}

$term_id = (int) $term_id;
$terms = _get_term_hierarchy( $taxonomy );

if ( ! isset( $terms[ $term_id ] ) ) {
    return array();
}

$children = $terms[ $term_id ];
foreach ( (array) $terms[ $term_id ] as $child ) {
    if ( $term_id === $child ) {
        continue;
    }

    if ( isset( $terms[ $child ] ) ) {
        $children = array_merge( $children, get_term_children( $child, $taxonomy ) );
    }
}

return $children;

}

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

  • cat_is_ancestor_of()
  • get_adjacent_post()
  • get_ancestors()
  • get_category_parents()
  • get_next_post()
  • get_post_ancestors()
  • get_previous_post()

Таксономии

  • edit_term_link()
  • get_taxonomies()
  • register_taxonomy()
  • taxonomy_exists()

Эти функции помогут вам лучше понимать, как работать с терминами и таксономиями в WordPress.

Leave a Reply

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