WordPress как на ладони
Прибыльная монетизация. Выгодно. Безопасно. Стабильно.

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( $post_id );
$post_id(число)
ID поста, категории которого нужно получить.
По умолчанию: $post->ID

Примеры

3

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

Пример, как получить категории поста за пределами Цикла 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
1

#2 Получение данных первой категории из массива

Показать только имя первой категории..

В этом примере мы получаем первый элемент массива ([0]) $categories.

$categories = get_the_category();

if ( ! empty( $categories ) ) {
	echo esc_html( $categories[0]->name );
}

Сделайте первую категорию ссылкой на страницу категории:.

$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>';
}
0

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

Этот пример показывает как можно создать картинку к каждой категории, в атрибуте 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 . '" />';
}
0

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

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

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

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

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 ) // Название рубрики
	);
}
0

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

$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

#7 Пример того что возвращает функция

$categories = get_the_category();

print_r( $categories );

Result:

Array
(
	[0] => WP_Term Object
		(
			[term_id] => 7
			[name] => Codex
			[slug] => codex
			[term_group] => 0
			[term_taxonomy_id] => 7
			[taxonomy] => category
			[description] =>
			[parent] => 3
			[count] => 17
			[filter] => raw
			[term_order] => 1
			[cat_ID] => 7
			[category_count] => 17
			[category_description] =>
			[cat_name] => Codex
			[category_nicename] => codex
			[category_parent] => 3
		)

	[1] => WP_Term Object
		(
			[term_id] => 4
			[name] => Usefulness
			[slug] => usefulness
			[term_group] => 0
			[term_taxonomy_id] => 4
			[taxonomy] => category
			[description] =>
			[parent] => 3
			[count] => 7
			[filter] => raw
			[term_order] => 2
			[cat_ID] => 4
			[category_count] => 7
			[category_description] =>
			[cat_name] => Usefulness
			[category_nicename] => usefulness
			[category_parent] => 3
		)

)

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

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

Код get_the_category() WP 6.1.1

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 the `$post_id` parameter.
	 *
	 * @param WP_Term[] $categories An array of categories to return for the post.
	 * @param int|false $post_id    The post ID.
	 */
	return apply_filters( 'get_the_categories', $categories, $post_id );
}
28 комментариев
Полезные 1 Все
    Войти