# 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. Используя её, вы сможете легко получать информацию о категориях и тегах, что сделает ваши посты более организованными и улучшит навигацию по сайту.