WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

get_the_category() WP 0.71

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

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

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

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

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

<?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

Код get the category: wp-includes/category-template.php WP 4.8

<?php
function get_the_category( $id = false ) {
	$categories = get_the_terms( $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 `$id` parameter.
	 *
	 * @param array $categories An array of categories to return for the post.
	 * @param int   $id         ID of the post.
	 */
	return apply_filters( 'get_the_categories', $categories, $id );
}

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

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

get_the_category 29 комментариев
Полезные 1 Вопросы 4 Все
  • Илья

    Использую

    <?php $cat = get_the_category(); echo $cat[0]->cat_name; ?> 

    Не выводится название рубрики в которой нет записей. Как исправить?

    Ответитьгод назад #
  • adward1 cайт: tatar-congress.org

    На странице single.php решил вывести список категорий, в которых пост присутствует:

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

    в итоге вывелось на экран

    array(0) {}

    При этом в админке - при редактировании - всё нормально, показывает в каикх категорях "состоит пост".

    В чём может быть трабла?

    • Kama4452

      Переменная $post где-то изменяется... Убедись что в ней то что должно быть...

      • adward1 cайт: tatar-congress.org

        да нет же. я вывел данные там, где идёт обработка данных по конкретному посту. вот, смотрите кусок кода:

                    echo '<br>$post->ID:' . $post->ID;
        			echo '<br>Title:' . get_the_title( $post ) ;
        			echo '<br>';
        
        			$categories = get_the_category( $post->ID );
        			var_dump( $categories );

        вот результат:

        то есть я проверил. Я запросил заголовок поста по его $post->ID и получил, однако, get_the_category по ID - выдал пустой массив.

        При этом, если перейти в редактирование поста, то все категории - на месте:

        При этом, вот этот код:

        $product_terms = wp_get_object_terms($post->ID, 'category');
        			if( ! empty($product_terms)){
        				if( ! is_wp_error($product_terms) ){
        					echo '';
        					foreach( $product_terms as $term ){
        						echo '<a href="'. get_term_link($term) .'">'. $term->name .'</a>,  '; 
        					}
        					echo '';
        				}
        			}   

        вполне вернул мне список рубрик.

        Теперь мне нужно как то понять, как это использовать в "хлебных крошках", потому как ваш код, описанный вот тут http://wp-kama.ru/id_541/samyie-hlebnyie-kroshki-breabcrumbs-dlya-wordpress.html выводит только ссылку на главную и название поста...

        • Kama4452

          Что-то у вас не то там. Фантастика какая-то получается... Объектный кэш случаем не включен или не пробовал включать? С крошками как разобраться в комментах там посмотри, там много всякого было...

  • Dima

    Подскажите,как получить произвольное поле acf для категории поста и вывести его

    Ответить3 месяца назад #
  • Константин cайт: mygeografi.ru

    здравствуйте! Наверное простая задача, но не могу найти. Помогите!
    Нужно на странице архивов вывести записи только основной категории. А у меня есть дочерние категории и они тоже выводятся. Как не выводить дочерние? Также поясню, что текущую категорию надо определить динамически. Код у меня на сайте такой:

    <div id="post-" class="post">
    и т.д.

    Ответить2 месяца назад #
    • Константин cайт: mygeografi.ru

      Что-то код в комментарии обрезало

      Ответить2 месяца назад #

Здравствуйте, !

Ваш комментарий