## WP_GET_POST_CATEGORIES() │ WP 2.1.0
Функция wp_get_post_categories() получает список категорий поста в виде массива.
Эта функция является оберткой для функции wp_get_object_terms(), предназначенной для упрощения работы с концепцией "таксономий WordPress".
Обратите внимание, что результаты этой функции не кэшируются. Это значит, что каждый раз, когда вы вызываете эту функцию, выполняется запрос к базе данных. Используйте её с осторожностью. Для улучшения производительности лучше использовать функции, такие как get_the_category(), результаты которых кэшируются.
### Использование
```php
$categories = wp_get_post_categories( $post_id, $args );
$post_id(int) — ID поста. По умолчанию: 0 (это не будет ID глобального $post).$args(array) — параметры запроса категорий. По умолчанию: пустой массив.
Параметры $args
Смотрите WP_Term_Query::__construct() для всех поддерживаемых аргументов.
orderby (string)
Критерий, по которому будет сортироваться результат. Может быть:
count— по количеству постов;name— по имени (по умолчанию);slug— по слагу;none— вывод без сортировки.
По умолчанию: 'name'
order (string)
Направление сортировки. ASC — по возрастанию, DESC — по убыванию.
По умолчанию: 'ASC'
fields (string)
Какие поля включить в результирующий массив. Может быть:
all— массив объектовWP_Termс полной информацией о каждой категории;all_with_object_id— то же, что и all, плюс ID термина;ids— получить только ID терминов;names— получить только имена терминов.
По умолчанию: 'ids'
Примеры
1. Базовое использование функции
Этот пример демонстрирует результат базового использования функции:
$test = wp_get_post_categories( $post->ID );
print_r( $test );
Вывод:
Array
(
[0] => 1
[1] => 2
)
Вывод второго элемента:
echo $test[1]; // Вывод: 2
2. Сбор информации о категориях
Этот пример показывает, как получить категории поста и собрать необходимые данные в массив $cats.
$post_categories = wp_get_post_categories( $post_id );
$cats = array();
foreach( $post_categories as $c ){
$cat = get_category( $c );
$cats[] = [ 'name' => $cat->name, 'slug' => $cat->slug ];
}
3. Получение всех данных категорий поста
Чтобы получить все данные о категориях поста, используйте следующий код:
$test = wp_get_post_categories( $post->ID, [ 'fields' => 'all' ] );
print_r( $test );
Вывод:
Array
(
[0] => stdClass Object
(
[term_id] => 1
[name] => Без категории
[slug] => no-category
[term_group] => 0
[term_taxonomy_id] => 1
[taxonomy] => category
[description] =>
[parent] => 0
[count] => 2
[filter] => raw
)
[1] => stdClass Object
(
[term_id] => 2
[name] => Некоторая категория
[slug] => some-category
[term_group] => 0
[term_taxonomy_id] => 2
[taxonomy] => category
[description] =>
[parent] => 0
[count] => 1
[filter] => raw
)
)
Выводим имена категорий:
foreach( $test as $cat ){
echo $cat->name .'
';
}
/* Вывод:
Без категории
Некоторая категория
*/
Замечания
- Смотрите:
wp_get_object_terms()
Изменения
С версии 2.1.0 — введена функция.
Код функции
function wp_get_post_categories( $post_id = 0, $args = array() ) {
$post_id = (int) $post_id;
$defaults = array( 'fields' => 'ids' );
$args = wp_parse_args( $args, $defaults );
$cats = wp_get_object_terms( $post_id, 'category', $args );
return $cats;
}