Получаем массив данных о категориях относящихся к указанному посту get_the_category()

21.01.2017

Получает массив данных о категориях относящихся к указанному посту.

Функцию можно использовать за пределами Цикла WordPress, если указать ID поста.

get_the_category()

Возвращает

массив объектов с данными о каждой категории, которая относится к посту. Отдельный объект для каждой категории.

Использование

<?php get_the_category( $id ) ?>
$id(число)
ID поста, категории которого нужно получить.
По умолчанию: $post->ID

Примеры

#1 Выведем картинку для каждой категории

Этот пример показывает как можно создать картинку к каждой категории, в атрибуте alt будет указано название категории. Картинки должны иметь названия такие же как и ID категорий (12.jpg) и лежать в корне сайта в папке images. Код нужно использовать внутри Цикла:

foreach( get_the_category() as $category ){
  echo '<img src="http://example.com/images/' . $category->cat_ID . '.jpg" alt="' . $category->cat_name . '" />';
}

#2 Название первой категории

Показать название только первой категории (если пост относится к нескольким категориям):

$category = get_the_category();
echo $category[0]->cat_name;

#3 Категории поста за пределами цикла

Пример, как получить категории поста за пределами Цикла WordPress:

global $post;
 
$categories = get_the_category( $post->ID );
var_dump( $categories );

Данные, которые содержит каждый объект категории:

$cat = get_the_category($post->ID);
 
// ID категории
$cat->cat_ID
 
// Название категории
$cat->cat_name
 
// Альтернативное название категории
$cat->category_nicename
 
// Описание категории (задается на странице редактирования категории)
$cat->category_description
 
// ID родительской категории
$cat->category_parent
 
// Количество записей в категории
$cat->category_count

Чтобы получить ID текущей категории

if (is_category()) {
  echo get_queried_object()->term_id;
}

Получаем рубрики произвольных постов используя get_the_terms()

$cur_terms = get_the_terms( $post->ID, 'custom_name' );
foreach( $cur_terms as $cur_term ){
  echo '<a href="'. get_term_link( (int)$cur_term->term_id, $cur_term->taxonomy ) .'">'. $cur_term->name .'</a>,'
}

Вывести категорию ссылкой

<?php the_category(', '); ?>

#4 Вывод ссылок на рубрики поста

foreach (get_the_category() as $category) {
    printf(
        '<a href="%s" class="link link_text">%s</a>', // Шаблон вывода ссылки
        esc_url(get_category_link($category)), // Ссылка на рубрику
        esc_html($category->name) // Название рубрики
    );
}

#5 Вывод ссылок на рубрики поста через запятую

$links = array_map(function ($category) {
    return sprintf(
        '<a href="%s" class="link link_text">%s</a>', // Шаблон вывода ссылки
        esc_url(get_category_link($category)), // Ссылка на рубрику
        esc_html($category->name) // Название рубрики
    );
}, get_the_category());

echo implode(', ', $links);

Как всегда, кладезь полезной информации wp-kama.ru.

Рекомендую к прочтению:

Оставить комментарий