Функция get_the_category()
в WordPress возвращает массив категорий (объектов WP_Term
), которые назначены конкретной записи. Это удобный инструмент для вывода категорий как в виде простого текста, так и в виде ссылок на страницы категорий.
get_the_category( int $post_id = false ): WP_Term[]
Описание параметров
- $post_id (необязательный)
ID поста, для которого нужно получить категории. По умолчанию используется ID текущего поста в цикле WordPress (The Loop
).
Возвращаемое значение
Функция возвращает массив объектов WP_Term
, каждый из которых представляет одну категорию, назначенную посту.
Пример 1: Получение и вывод первой категории
Этот пример выводит название первой категории, к которой принадлежит запись:
$categories = get_the_category();
if ( ! empty( $categories ) ) {
echo esc_html( $categories[0]->name );
}
Пример 2: Ссылка на первую категорию
Этот код создаёт ссылку на страницу первой категории:
$categories = get_the_category();
if ( ! empty( $categories ) ) {
echo '<a href="' . esc_url( get_category_link( $categories[0]->term_id ) ) . '">' . esc_html( $categories[0]->name ) . '</a>';
}
Пример 3: Получение категорий для записи с кастомным типом поста
Функция get_the_category()
работает только с таксономией по умолчанию — category
. Для получения категорий для произвольных типов постов используйте функцию get_the_terms()
:
$categories = get_the_terms( $post->ID, 'custom_taxonomy' );
if ( ! empty( $categories ) ) {
foreach ( $categories as $category ) {
echo esc_html( $category->name ) . '<br>';
}
}
Пример 4: Получение категорий вне цикла (The Loop)
Если вы хотите получить категории для записи вне цикла, вы можете передать ID записи в качестве аргумента:
$post = get_post(); // Получаем текущий пост
if ( $post ) {
$categories = get_the_category( $post->ID );
var_dump( $categories );
}
Пример 5: Вывод всех категорий записи в виде ссылок
Следующий пример выводит все категории записи в виде ссылок, разделённых пробелом:
$categories = get_the_category();
$separator = ' ';
$output = '';
if ( ! empty( $categories ) ) {
foreach ( $categories as $category ) {
$output .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '">' . esc_html( $category->name ) . '</a>' . $separator;
}
echo trim( $output, $separator );
}
Пример 6: Вывод всех категорий записи через запятую
В этом примере категории записи выводятся как строка, где названия категорий разделены запятой:
$categories = get_the_category();
$category_list = join( ', ', wp_list_pluck( $categories, 'name' ) );
echo wp_kses_post( $category_list );
Пример 7: Вывод изображений для категорий
Если у вас есть изображения, ассоциированные с ID категории (например, с именем файла в формате term_id.jpg
), вы можете вывести их следующим образом:
$categories = get_the_category();
foreach ( $categories as $category ) {
echo '<img src="https://example.com/images/' . esc_attr( $category->term_id ) . '.jpg" alt="' . esc_attr( $category->name ) . '">';
}
Пример 8: Обработка пустого результата
В случае, если пост не имеет категории, результатом будет пустой массив. Вот пример проверки:
$categories = get_the_category();
if ( empty( $categories ) ) {
echo 'Категории не назначены';
} else {
foreach ( $categories as $category ) {
echo esc_html( $category->name ) . '<br>';
}
}
Заключение
Функция get_the_category()
— это простой способ получить категории поста в WordPress. Она позволяет вывести названия категорий как в виде текста, так и в виде ссылок на их страницы. Для работы с произвольными таксономиями используйте функцию get_the_terms()
.