get_terms()

Извлекает термины в данной таксономии или списке таксономий
Функция WordPress
INT 4.8.0, 4.5.0, 4.4.0, 4.2.0, 2.3.0
WordPress Icon
Содержание
  1. Описание функции
  2. Примеры использования
  3. Получение всех терминов в указанной таксономии
  4. Получение терминов с определенными ID
  5. Получение терминов с определенными именами
  6. Получение терминов с определенными слагами
  7. Получение терминов, отсортированных по количеству объектов
  8. Получение терминов, скрытых от публикации
  9. Получение терминов с определенными метаданными
  10. Вопросы и ответы
  11. Как получить все термины в указанной таксономии?
  12. Как отсортировать термины по имени или другому полю?
  13. Как скрыть термины, которые не привязаны к постам?
  14. Как получить только определенные термины по их ID или слагу?
  15. Как исключить определенные термины из результатов запроса?
  16. Как получить только родительские термины или только дочерние термины?
  17. Как получить количество терминов в указанной таксономии?
  18. Как выполнить поиск терминов по их имени или описанию?
  19. Как получить термины, у которых нет дочерних терминов?
  20. Связанные элементы

Описание функции

Функция get_terms() используется для получения списка терминов в указанной таксономии или списке таксономий.

Она выполняет запрос к базе данных WordPress и возвращает массив терминов, количество терминов в виде числовой строки или объект WP_Error, если указанные таксономии не существуют.

Использование

get_terms( array|string $args = array(), array|string $deprecated = '' ): WP_Term[]|int[]|string[]|string|WP_Error

Функция get_terms() принимает два необязательных параметра: $args и $deprecated. Параметр $args может быть массивом или строкой, содержащей аргументы запроса. Параметр $deprecated используется для обратной совместимости и может быть пустой строкой или массивом.

  • $args (массив или строка, необязательный): Массив или строка аргументов запроса. См. WP_Term_Query::__construct() для получения информации о принимаемых аргументах.
  • $deprecated (массив или строка, необязательный): Аргументы запроса в старом формате функции. Если указан, этот параметр будет интерпретирован как $args, а первый параметр функции будет обработан как таксономия или массив таксономий.

Функция возвращает массив терминов, количество терминов в виде числовой строки или объект WP_Error, если указанные таксономии не существуют. Дополнительную информацию см. в описании функции.

<?php
$args = array(
    'taxonomy' => 'category',
    'hide_empty' => false,
    'orderby' => 'name',
    'order' => 'ASC',
    'number' => 10
);
$terms = get_terms( $args );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    foreach ( $terms as $term ) {
        // Выводим название термина
        echo '<p>' . $term->name . '</p>';
    }
} else {
    echo 'Нет доступных терминов.';
}
?>

В этом примере мы используем функцию get_terms() для получения списка терминов из таксономии «category». Мы устанавливаем параметры запроса, чтобы отобразить все термины, отсортированные по имени в алфавитном порядке, и ограничить количество терминов до 10. Затем мы проверяем, есть ли доступные термины, и выводим их названия.

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

Получение всех терминов в указанной таксономии


$terms = get_terms( 'category' );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    foreach ( $terms as $term ) {
        echo $term->name;
    }
}

В этом примере мы используем функцию get_terms() для получения всех терминов в таксономии «category». Затем мы проверяем, что полученный результат не пустой и не содержит ошибок, и выводим название каждого термина.

Получение терминов с определенными ID


$term_ids = array( 1, 2, 3 );
$terms = get_terms( array(
    'taxonomy' => 'category',
    'include'  => $term_ids,
) );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    foreach ( $terms as $term ) {
        echo $term->name;
    }
}

В этом примере мы используем функцию get_terms() для получения терминов с определенными ID (1, 2, 3) в таксономии «category». Затем мы проверяем, что полученный результат не пустой и не содержит ошибок, и выводим название каждого термина.

Получение терминов с определенными именами


$term_names = array( 'Term 1', 'Term 2', 'Term 3' );
$terms = get_terms( array(
    'taxonomy' => 'category',
    'name'     => $term_names,
) );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    foreach ( $terms as $term ) {
        echo $term->name;
    }
}

В этом примере мы используем функцию get_terms() для получения терминов с определенными именами (‘Term 1’, ‘Term 2’, ‘Term 3’) в таксономии «category». Затем мы проверяем, что полученный результат не пустой и не содержит ошибок, и выводим название каждого термина.

Получение терминов с определенными слагами


$term_slugs = array( 'term-1', 'term-2', 'term-3' );
$terms = get_terms( array(
    'taxonomy' => 'category',
    'slug'     => $term_slugs,
) );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    foreach ( $terms as $term ) {
        echo $term->name;
    }
}

В этом примере мы используем функцию get_terms() для получения терминов с определенными слагами (‘term-1’, ‘term-2’, ‘term-3’) в таксономии «category». Затем мы проверяем, что полученный результат не пустой и не содержит ошибок, и выводим название каждого термина.

Получение терминов, отсортированных по количеству объектов


$terms = get_terms( array(
    'taxonomy' => 'category',
    'orderby'  => 'count',
    'order'    => 'DESC',
) );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    foreach ( $terms as $term ) {
        echo $term->name;
    }
}

В этом примере мы используем функцию get_terms() для получения терминов в таксономии «category», отсортированных по количеству объектов в порядке убывания. Затем мы проверяем, что полученный результат не пустой и не содержит ошибок, и выводим название каждого термина.

Получение терминов, скрытых от публикации


$terms = get_terms( array(
    'taxonomy'   => 'category',
    'hide_empty' => false,
) );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    foreach ( $terms as $term ) {
        echo $term->name;
    }
}

В этом примере мы используем функцию get_terms() для получения всех терминов в таксономии «category», включая те, которые не назначены ни одному посту. Затем мы проверяем, что полученный результат не пустой и не содержит ошибок, и выводим название каждого термина.

Получение терминов с определенными метаданными


$terms = get_terms( array(
    'taxonomy'     => 'category',
    'meta_key'     => 'color',
    'meta_value'   => 'red',
    'meta_compare' => 'LIKE',
) );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    foreach ( $terms as $term ) {
        echo $term->name;
    }
}

В этом примере мы используем функцию get_terms() для получения терминов в таксономии «category», у которых мета-поле «color» содержит значение «red». Затем мы проверяем, что полученный результат не пустой и не содержит ошибок, и выводим название каждого термина.

Вопросы и ответы

Как получить все термины в указанной таксономии?

Для получения всех терминов в указанной таксономии используется функция get_terms(). Она принимает массив или строку аргументов и возвращает массив терминов, количество терминов в виде числовой строки или WP_Error, если таксономии не существует.

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


$terms = get_terms( 'taxonomy_name' );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    foreach ( $terms as $term ) {
        echo '<p>' . $term->name . '</p>';
    }
}

Как отсортировать термины по имени или другому полю?

Для сортировки терминов по имени или другому полю используется параметр orderby функции get_terms(). Значение этого параметра может быть одним из следующих: ‘name’, ‘slug’, ‘term_group’, ‘term_id’, ‘id’, ‘description’, ‘parent’, ‘term_order’, ‘count’, ‘include’, ‘slug__in’, ‘meta_value’, ‘meta_value_num’, ‘none’.

Пример использования для сортировки по имени:


$terms = get_terms( array(
    'taxonomy' => 'taxonomy_name',
    'orderby'  => 'name',
) );

Как скрыть термины, которые не привязаны к постам?

Для скрытия терминов, которые не привязаны к постам, используется параметр hide_empty функции get_terms(). Значение этого параметра может быть 1 (true) или 0 (false).

Пример использования для скрытия пустых терминов:


$terms = get_terms( array(
    'taxonomy'   => 'taxonomy_name',
    'hide_empty' => true,
) );

Как получить только определенные термины по их ID или слагу?

Для получения только определенных терминов по их ID или слагу, необходимо использовать параметр include или slug в функции get_terms().

Пример использования параметра include:

 $args = array(
    'taxonomy' => 'category',
    'include' => array(1, 2, 3)
 );
$terms = get_terms( $args );

Пример использования параметра slug:

 $args = array(
    'taxonomy' => 'category',
    'slug' => array('term1', 'term2', 'term3')
 );
$terms = get_terms( $args );

Как исключить определенные термины из результатов запроса?

Для исключения определенных терминов из результатов запроса, необходимо использовать параметр exclude в функции get_terms().

Пример использования параметра exclude:

 $args = array(
    'taxonomy' => 'category',
    'exclude' => array(4, 5, 6)
 );
$terms = get_terms( $args );

Как получить только родительские термины или только дочерние термины?

Для получения только родительских терминов или только дочерних терминов, необходимо использовать параметры parent или child_of в функции get_terms().

Пример использования параметра parent для получения только родительских терминов:

 $args = array(
    'taxonomy' => 'category',
    'parent' => 0
 );
$terms = get_terms( $args );

Пример использования параметра child_of для получения только дочерних терминов:

 $args = array(
    'taxonomy' => 'category',
    'child_of' => 1
 );
$terms = get_terms( $args );

Как получить количество терминов в указанной таксономии?

Для получения количества терминов в указанной таксономии можно использовать функцию get_terms() с параметром count установленным в true. Возвращаемое значение будет числовой строкой, представляющей количество терминов.


$taxonomy = 'category';
$count = get_terms( array(
    'taxonomy' => $taxonomy,
    'count'    => true,
) );
echo 'Количество терминов в таксономии ' . $taxonomy . ': ' . $count;

Как выполнить поиск терминов по их имени или описанию?

Для выполнения поиска терминов по их имени или описанию можно использовать параметры name__like и description__like функции get_terms(). Параметры принимают строку, которая будет использоваться в SQL-запросе с подстановкой символов подстановки.


$search_term = 'apple';
$terms = get_terms( array(
    'taxonomy'        => 'fruits',
    'name__like'      => $search_term,
    'description__like' => $search_term,
) );
foreach ( $terms as $term ) {
    echo $term->name . '<br>';
}

Как получить термины, у которых нет дочерних терминов?

Для получения терминов, у которых нет дочерних терминов, можно использовать параметр childless функции get_terms(). Параметр принимает значение true для ограничения результатов только терминами без дочерних терминов.


$terms = get_terms( array(
    'taxonomy'  => 'fruits',
    'childless' => true,
) );
foreach ( $terms as $term ) {
    echo $term->name . '<br>';
}

Функция get_terms() позволяет получить термины в указанной таксономии или списке таксономий. Она предоставляет широкие возможности для работы с терминами, включая получение количества терминов, выполнение поиска по имени или описанию, а также получение терминов без дочерних терминов. Это мощный инструмент для разработчиков WordPress, который позволяет эффективно управлять таксономиями и терминами.

Связанные элементы

  • Функция get_term(): Получает объект термина по его ID.
  • Функция wp_count_terms(): Возвращает количество терминов в указанной таксономии.
  • Функция get_term_by(): Получает объект термина по указанному полю и значению.
  • Хук get_terms_args: Фильтрует аргументы запроса для функции get_terms.
  • Хук get_terms: Фильтрует результаты запроса функции get_terms.
  • Хук get_terms_orderby: Фильтрует поле сортировки запроса функции get_terms.
  • Класс WP_Term_Query: Класс для выполнения запросов к терминам.
  • Класс WP_Error: Класс для представления ошибок WordPress.
  • Класс WP_Term: Класс для представления термина WordPress.
Обсуждение