wp_get_post_terms()

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

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

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

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

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

wp_get_post_terms( int $post_id, string|string[] $taxonomy = 'post_tag', array $args = array() ): array|WP_Error

Функция принимает три параметра:

  • $post_id (необязательно) — ID поста. По умолчанию равен 0.
  • $taxonomy (необязательно) — слаг таксономии или массив слагов таксономий, для которых нужно получить термины. По умолчанию равен ‘post_tag’.
  • $args (необязательно) — параметры запроса терминов. См. WP_Term_Query::__construct() для поддерживаемых аргументов.
  • $post_id (int) — ID поста. По умолчанию 0.
  • $taxonomy (string|string[]) — слаг таксономии или массив слагов таксономий, для которых нужно получить термины. По умолчанию ‘post_tag’.
  • $args (array) — параметры запроса терминов. См. WP_Term_Query::__construct() для поддерживаемых аргументов.

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


$post_id = 123; // ID поста
$taxonomy = 'category'; // таксономия
$args = array(
  'orderby' => 'name',
  'order' => 'ASC',
  'hide_empty' => false,
);
$terms = wp_get_post_terms( $post_id, $taxonomy, $args );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
  foreach ( $terms as $term ) {
    echo $term->name; // выводим название термина
  }
}

В этом примере мы получаем термины категории для поста с ID 123. Затем мы выводим название каждого термина.

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

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


$post_id = 123; // ID поста
$terms = wp_get_post_terms($post_id);
if (!empty($terms)) {
    foreach ($terms as $term) {
        // Выводим название термина
        echo $term->name;
    }
} else {
    echo 'Термины не найдены';
}

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


$post_id = 123; // ID поста
$taxonomy = 'category'; // Таксономия
$terms = wp_get_post_terms($post_id, $taxonomy);
if (!empty($terms)) {
    foreach ($terms as $term) {
        // Выводим название термина
        echo $term->name;
    }
} else {
    echo 'Термины не найдены';
}

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


$post_id = 123; // ID поста
$taxonomy = 'category'; // Таксономия
$args = array(
    'hide_empty' => false, // Показывать все термины, включая пустые
    'orderby' => 'name', // Сортировка по названию
    'order' => 'ASC' // Сортировка по возрастанию
);
$terms = wp_get_post_terms($post_id, $taxonomy, $args);
if (!empty($terms)) {
    foreach ($terms as $term) {
        // Выводим название термина
        echo $term->name;
    }
} else {
    echo 'Термины не найдены';
}

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


$post_id = 123; // ID поста
$taxonomy = 'category'; // Таксономия
$args = array(
    'fields' => 'names' // Получаем только названия терминов
);
$terms = wp_get_post_terms($post_id, $taxonomy, $args);
if (!empty($terms)) {
    foreach ($terms as $term_name) {
        // Выводим название термина
        echo $term_name;
    }
} else {
    echo 'Термины не найдены';
}

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


$post_id = 123; // ID поста
$taxonomy = 'category'; // Таксономия
$args = array(
    'orderby' => 'count', // Сортировка по количеству объектов, связанных с термином
    'order' => 'DESC' // Сортировка по убыванию
);
$terms = wp_get_post_terms($post_id, $taxonomy, $args);
if (!empty($terms)) {
    foreach ($terms as $term) {
        // Выводим название термина и количество объектов
        echo $term->name . ' (' . $term->count . ')';
    }
} else {
    echo 'Термины не найдены';
}

Получение терминов поста с указанием максимального количества


$post_id = 123; // ID поста
$taxonomy = 'category'; // Таксономия
$args = array(
    'number' => 5 // Максимальное количество терминов
);
$terms = wp_get_post_terms($post_id, $taxonomy, $args);
if (!empty($terms)) {
    foreach ($terms as $term) {
        // Выводим название термина
        echo $term->name;
    }
} else {
    echo 'Термины не найдены';
}

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

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

Для получения всех терминов, связанных с постом, используйте функцию wp_get_post_terms(). Эта функция принимает следующие параметры:

  • $post_id (int, опционально) — ID поста. По умолчанию равен 0.
  • $taxonomy (строка или массив строк, опционально) — слаг таксономии или массив слагов, для которых нужно получить термины. По умолчанию равен ‘post_tag’.
  • $args (массив, опционально) — параметры запроса терминов. См. документацию класса WP_Term_Query для поддерживаемых аргументов.

Функция возвращает массив объектов WP_Term в случае успеха или пустой массив, если термины не найдены. Если таксономия $taxonomy не существует, возвращается объект WP_Error.

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


$terms = wp_get_post_terms( $post_id, $taxonomy, $args );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
  foreach ( $terms as $term ) {
    echo $term->name;
  }
}

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

Если вам нужно получить только определенную таксономию для поста, вы можете передать второй параметр функции wp_get_post_terms() соответствующий слаг таксономии. Например, чтобы получить только термины из таксономии ‘category’, вы можете использовать следующий код:


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

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

Если вам нужно получить только имена терминов, связанных с постом, вы можете использовать параметр fields со значением ‘names’ при вызове функции wp_get_post_terms(). Например:


$terms = wp_get_post_terms( $post_id, $taxonomy, array( 'fields' => 'names' ) );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
  foreach ( $terms as $term_name ) {
    echo $term_name;
  }
}

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

Для получения только идентификаторов терминов, связанных с постом, можно использовать функцию wp_get_post_terms() с параметром fields установленным в значение ids. Это вернет массив идентификаторов терминов.


$post_id = 123; // ID поста
$taxonomy = 'category'; // таксономия
$terms_ids = wp_get_post_terms( $post_id, $taxonomy, array( 'fields' => 'ids' ) );

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

Для получения только слагов терминов, связанных с постом, можно использовать функцию wp_get_post_terms() с параметром fields установленным в значение slugs. Это вернет массив слагов терминов.


$post_id = 123; // ID поста
$taxonomy = 'category'; // таксономия
$terms_slugs = wp_get_post_terms( $post_id, $taxonomy, array( 'fields' => 'slugs' ) );

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

Для получения только количества терминов, связанных с постом, можно использовать функцию wp_get_post_terms() с параметром count установленным в значение true. Это вернет число терминов.


$post_id = 123; // ID поста
$taxonomy = 'category'; // таксономия
$terms_count = wp_get_post_terms( $post_id, $taxonomy, array( 'count' => true ) );

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

Для получения только родительских терминов, связанных с постом, можно использовать функцию wp_get_post_terms() с указанием параметра child_of равным 0:

$post_id = get_the_ID();
$taxonomy = 'category';
$args = array(
    'child_of' => 0
);
$terms = wp_get_post_terms( $post_id, $taxonomy, $args );
foreach ( $terms as $term ) {
    echo $term->name;
}

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

Для получения только дочерних терминов, связанных с постом, можно использовать функцию wp_get_post_terms() с указанием параметра parent равным ID родительского термина:

$post_id = get_the_ID();
$taxonomy = 'category';
$args = array(
    'parent' => $parent_term_id
);
$terms = wp_get_post_terms( $post_id, $taxonomy, $args );
foreach ( $terms as $term ) {
    echo $term->name;
}

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

Для получения только терминов без дочерних элементов, связанных с постом, можно использовать функцию wp_get_post_terms() с указанием параметра childless равным true:

$post_id = get_the_ID();
$taxonomy = 'category';
$args = array(
    'childless' => true
);
$terms = wp_get_post_terms( $post_id, $taxonomy, $args );
foreach ( $terms as $term ) {
    echo $term->name;
}

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

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

  • Функция get_term(): возвращает объект термина по его ID.
  • Функция get_terms(): возвращает массив объектов терминов, соответствующих заданным параметрам запроса.
  • Функция get_term_by(): возвращает объект термина по указанному полю и значению.
  • Функция get_the_terms(): возвращает массив объектов терминов, связанных с определенным постом.
  • Функция has_term(): проверяет, есть ли у поста указанный термин.
  • Функция is_object_in_term(): проверяет, принадлежит ли объект указанному термину.
  • Хук get_terms_args: позволяет изменить аргументы запроса для функции get_terms.
  • Хук get_terms: позволяет изменить результаты запроса для функции get_terms.
  • Класс WP_Term_Query: используется для выполнения запросов к базе данных для получения терминов.
  • Класс WP_Term: представляет термин, содержит свойства и методы для работы с терминами.
Обсуждение