WP_GET_POST_CATEGORIES() – Получение категорий поста в WordPress

## 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;
}

Leave a Reply

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