WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

get_the_category() WP 0.71

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

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

Работает на основе: get_the_terms()
Основа для: get_the_category_list()
Хуки из функции
Возвращает

WP_Term[]. Массив WP_Term объектов с данными о каждой категории, которая относится к посту. Отдельный объект для каждой категории. Каждый объект WP_Term также дополнен свойствами, генерируемыми функцией _make_cat_compat().

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

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->term_id . '.jpg" alt="' . $category->name . '" />'; 
} 

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

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

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

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

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

global $post;

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

Данные, которые содержит каждый объект категории (все свойства смотрите у класса WP_Term и функции _make_cat_compat()):

$cat = get_the_category($post->ID);

// ID категории
$cat->term_id

// Название категории
$cat->name 

// Ярлык категории
$cat->slug

// Описание категории (задается на странице редактирования категории)
$cat->description

// ID родительской категории
$cat->parent

// Количество записей в категории
$cat->count

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

Список изменений

С версии 0.71 Введена.

Код get_the_category() WP 5.5.1

wp-includes/category-template.php
<?php
function get_the_category( $post_id = false ) {
	$categories = get_the_terms( $post_id, 'category' );
	if ( ! $categories || is_wp_error( $categories ) ) {
		$categories = array();
	}

	$categories = array_values( $categories );

	foreach ( array_keys( $categories ) as $key ) {
		_make_cat_compat( $categories[ $key ] );
	}

	/**
	 * Filters the array of categories to return for a post.
	 *
	 * @since 3.1.0
	 * @since 4.4.0 Added `$post_id` parameter.
	 *
	 * @param WP_Term[] $categories An array of categories to return for the post.
	 * @param int|false $post_id    ID of the post.
	 */
	return apply_filters( 'get_the_categories', $categories, $post_id );
}

Cвязанные функции

Из раздела: Для записей

30 комментов
Полезные 1 Все