WP_GET_POST_TERMS() ─ Получение терминов поста в WordPress

# WP_GET_POST_TERMS() ─ Введение в функцию WordPress

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

## Когда использовать wp_get_post_terms()?

Иногда лучше обходиться функцией get_the_terms(), так как там результаты кешируются, что позволяет ускорить доступ к данным.

## Основная информация о функции

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

- **Массив** с объектами WP_Term при успешном выполнении.
- Пустой массив, если термины не найдены.
- Объект WP_Error, если указанный $taxonomy не существует.

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

Вот как вы можете использовать функцию wp_get_post_terms():

```php
wp_get_post_terms( $post_id, $taxonomy, $args );

Параметры

  • $post_id (int): ID поста. По умолчанию: 0 (ID глобального $post).
  • $taxonomy (string/array): Слаг таксономии или массив слагов, для которых нужно получить термины. По умолчанию: 'post_tag'.
  • $args (array): Параметры запроса для терминов.

Пример параметров $args:

  • $fields (string): Поля терминов для извлечения. Возможные значения:

    • all — получить все поля термина.
    • names — получить только имена терминов.
    • ids — получить только ID терминов.

    По умолчанию: 'all'.

С версии WP 4.7 вы можете передавать любые параметры функции get_terms(). Для полного списка параметров вы можете ознакомиться с документацией по wp_get_object_terms().

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

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

$term_list = wp_get_post_terms( 2647, 'post_tag', array('fields' => 'all') );

После выполнения этого кода, $term_list будет содержать данные:

Array(
    [0] => stdClass Object(
        [term_id] => 44
        [name] => Для начинающих
        [slug] => for-newbie
        [term_group] => 0
        [term_taxonomy_id] => 44
        [taxonomy] => post_tag
        [description] => 
        [parent] => 0
        [count] => 7
    )
    [1] => stdClass Object(
        [term_id] => 48
        [name] => Теория
        [slug] => theory
        [term_group] => 0
        [term_taxonomy_id] => 49
        [taxonomy] => post_tag
        [description] => 
        [parent] => 0
        [count] => 5
    )
    [2] => stdClass Object(
        [term_id] => 12
        [name] => Хаки
        [slug] => hacks
        [term_group] => 0
        [term_taxonomy_id] => 12
        [taxonomy] => post_tag
        [description] => 
        [parent] => 0
        [count] => 10
    )
)

Пример 2: Получение только имен тегов

$term_list = wp_get_post_terms( 2647, 'post_tag', array('fields' => 'names') );

Результат будет:

Array(
    [0] => Для начинающих
    [1] => Теория
    [2] => Хаки
)

Пример 3: Получение только ID тегов

$term_list = wp_get_post_terms( 2647, 'post_tag', array('fields' => 'ids') );

Результат будет:

Array(
    [0] => 44
    [1] => 48
    [2] => 12
)

Изменения в функции

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

Код функции

Вот как реализована функция wp_get_post_terms() в файле wp-includes/post.php:

function wp_get_post_terms( $post_id = 0, $taxonomy = 'post_tag', $args = array() ) {
    $post_id = (int) $post_id; // Приведение $post_id к целому числу.

    $defaults = array( 'fields' => 'all' ); // Значения по умолчанию.
    $args     = wp_parse_args( $args, $defaults ); // Объединяем параметры.

    $tags = wp_get_object_terms( $post_id, $taxonomy, $args ); // Получаем термины.

    return $tags; // Возвращаем термины.
}

Этот код определяет, как получить термины таксономии из базы данных, связанную с конкретным постом.

Заключение

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

Leave a Reply

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