wp_get_post_categories()
— это функция WordPress, которая позволяет получить список категорий, привязанных к конкретному посту. Она выступает в качестве абстрактного слоя для работы с таксономиями и упрощает взаимодействие с категориями постов.
wp_get_post_categories( int $post_id, array $args = array() ): array|WP_Error
Описание
Функция выполняет запрос к базе данных, чтобы получить категории, связанные с указанным постом. Это полезно для разработчиков, которым нужно динамически получать и обрабатывать информацию о категориях поста.
Обратите внимание: результат выполнения
wp_get_post_categories()
не кэшируется. Это значит, что каждый вызов функции делает запрос к базе данных, что может повлиять на производительность. Для кэшированных результатов рекомендуется использоватьget_the_category()
.
Параметры
- $post_id (int) (обязательный) — ID поста, для которого нужно получить категории. По умолчанию — 0.
- $args (array) (опциональный) — Дополнительные параметры запроса категорий. По умолчанию — пустой массив. Поддерживает параметры, аналогичные
WP_Term_Query::__construct()
.
Параметры $args
- orderby (строка) — Критерий сортировки:
count
— по количеству записейname
— по имени (по умолчанию)slug
— по слагуnone
— без сортировки
- order (строка) — Направление сортировки:
ASC
— по возрастанию (по умолчанию)DESC
— по убыванию
- fields (строка) — Определяет, какие данные вернуть:
all
— полный объект термина (по умолчанию)ids
— только ID категорийnames
— только имена категорийslugs
— только слаги категорийall_with_object_id
— полный объект термина с ID объекта
Возвращаемые значения
- array — Массив категорий или WP_Term объектов в зависимости от указанных полей.
- WP_Error — Возвращается, если таксономия «category» не существует.
Пример 1: Получение ID категорий поста
Этот пример показывает, как получить ID категорий для поста с ID 123:
$post_categories = wp_get_post_categories( 123 );
print_r( $post_categories );
/* Выведет:
Array
(
[0] => 5
[1] => 8
)
*/
Пример 2: Получение имён категорий
Если нужно получить только имена категорий:
$post_categories = wp_get_post_categories( 123, array( 'fields' => 'names' ) );
foreach( $post_categories as $name ) {
echo $name . '<br>';
}
/* Выведет:
News<br>
Technology<br>
*/
Пример 3: Получение всех данных категорий
Чтобы получить полный объект термина, укажите fields => 'all'
:
$post_categories = wp_get_post_categories( 123, array( 'fields' => 'all' ) );
foreach( $post_categories as $category ) {
echo 'Имя категории: ' . $category->name . '<br>';
echo 'Слаг категории: ' . $category->slug . '<br>';
echo 'Ссылка на категорию: ' . esc_url( get_category_link( $category->term_id ) ) . '<br><br>';
}
/* Выведет:
Имя категории: News
Слаг категории: news
Ссылка на категорию: https://example.com/category/news/
Имя категории: Technology
Слаг категории: technology
Ссылка на категорию: https://example.com/category/technology/
*/
Пример 4: Сортировка категорий в порядке убывания
Этот пример демонстрирует, как вывести категории поста в порядке убывания:
$post_categories = wp_get_post_categories( 123, array( 'fields' => 'names', 'order' => 'DESC' ) );
foreach( $post_categories as $name ) {
echo $name . '<br>';
}
/* Выведет:
Technology<br>
News<br>
*/
Пример 5: Исключение категорий
Чтобы исключить определенные категории из списка, можно использовать параметр exclude
:
$post_categories = wp_get_post_categories( 123, array( 'fields' => 'names', 'exclude' => array(1, 3) ) );
foreach( $post_categories as $name ) {
echo $name . '<br>';
}
/* Выведет, например:
Technology<br>
*/
Заключение
Функция wp_get_post_categories()
позволяет легко и гибко работать с категориями постов в WordPress. Она поддерживает различные параметры для сортировки, фильтрации и форматирования данных, что делает её полезной в разнообразных сценариях, от простого вывода названий категорий до работы с их полными объектами.