get_the_category — функция для вывода категорий (рубрик) к указанному посту

Функция возвращает массив объектов (в данном случае рубрики, в которых находится пост с указанным в параметрах ID).

Короче говоря в итоге вы получаете все рубрики поста и информацию о них.

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

get_the_category( $id )

Параметры

$id
(целое) ID поста, если функция используется в цикле, этот параметр необязателен.

Возвращаемые значения

Как я уже говорил, функция возвращает массив объектов, каждый из них содержит информацию об одной из рубрик, в которой находится пост.

В скобках указаны эквивалентные варианты.

  • term_ID (cat_ID) — ID рубрики,
  • name (cat_name) — название рубрики,
  • slug (category_nicename) — ярлык категории,
  • description (category_description) — описание категории,
  • parent (category_parent) — ID родительской категории,
  • count (category_count) — количество записей (постов) в рубрике,
  • term_group — значение колонки term_group в базе данных,
  • term_taxonomy_id — ID таксономии, у рубрик он равен 1,
  • taxonomy — название таксономии, для рубрик — category,
  • object_id — ID объекта;

Примеры

Выводим список рубрик со ссылками

Переменной $post_id задайте своё значение, либо просто удалите её оттуда, если используете этот код внутри цикла.

Для получения URL рубрики используем функцию get_category_link().

$categories = get_the_category($post_id);
if($categories){
	echo '<ul>';
	foreach($categories as $category) {
		echo '<li><a href="'. get_category_link($category->term_id) . '">' . $category->cat_name . '</a></li>';
	}
	echo '</ul>';
}

Выводим список рубрик к текущему посту через запятую

Функция trim() нужна для удаления каких-либо символов по краям строки, в данном случае запятую с пробелом.

$categories = get_the_category();
if($categories){
	foreach($categories as $category) {
		$out .= '<a href="'.get_category_link($category->term_id ).'">' . $category->name . '</a>, ';
	}
	echo trim($out, ', ');
}

Указываем ссылку только на первую рубрику, в которой находится пост

К каждому объекту массива $categories можно обратиться по порядковому номеру, нумерация начинается с нуля.

$categories = get_the_category(); 
if($categories[0]){
	echo '<a href="' . get_category_link($categories[0]->term_id ) . '">'. $categories[0]->name . '</a>';
}

Комментарии 15

  • Артур10 апреля 2014 в 12:04 #

    Мне нужно исключить вывод подрубрик из списка рубрик записи, это как-то можно сделать?

  • ruslan18 февраля 2015 в 17:02 #
    <?php the_category(', ') ?>

    - выведит ссылки на категории, к которым принадлежит запись.
    Как сделать, чтобы вывелись категории, кроме тех, где ID рубрики равер id1, id2, id3 например :)
    Не подскажите?

  • ruslan18 февраля 2015 в 17:02 #

    грубо говоря:
    покажи все категории, кроме этих

    • Миша19 февраля 2015 в 08:02 #

      Можно прямо из этого поста взять условие:

      $categories = get_the_category($post_id);
      foreach($categories as $category) {
      	if( !in_array( $category->term_id, array(1,2,3) ) ){ // проверяем, что это не категории с id1, id2, id3
      		echo '<a href="'. get_category_link($category->term_id) . '">' . $category->cat_name . '</a> ';
      	}
      }
      • ruslan2 сентября 2015 в 21:09 #

        Спасибо огромное!!!
        Это лучшее решение и очень простое!
        Еще раз спасибо :) Все работает :)

      • ruslan5 сентября 2015 в 17:09 #

        Поторопился написать, что все отлично...
        Все работает, но почему то ссылки на категории не показываются.
        В Смысле ссылки показываются, категории выводятся, но ведут они все на эту же страницу.

        Как поправить это?
        Заранее спасибо!

  • Михаил26 февраля 2015 в 00:02 #

    Здравствуйте
    Уже обшарил всё что только можно , но не могу найти , как изменить в записях «Опубликовано в» на «Категории»
    Firebug отображает , но в коде не знаю уже где и искать. Тема Response 2.0
    Заранее спасибо за ответ.

    • Миша26 февраля 2015 в 05:02 #

      Здравствуйте!
      В каждой теме это индивидуально, но могу дать несколько советов.

      1. Поищите в single.php. Но не в самом этом файле — обычно примерно после заголовка подключается файл meta.php (или как-то так).
      2. Сделайте поиск по файлам следущего запроса the_category( или Published (с учетом регистра).
  • Стас31 августа 2015 в 23:08 #

    Здравствуйте!
    Скажите пожалуйста как убрать из списка категории и оставить только подкатегории?

    Вид сейчас:
    Рубрика, Подкатегория 1, Подкатегория 2, Подкатегория 3

    А нужно:
    Подкатегория 1, Подкатегория 2, Подкатегория 3

    • Миша2 сентября 2015 в 21:09 #

      Добрый вечер!
      Попробуйте вовнутрь цикла вставить подобное условие:

      if( $category->parent == ID_родительской_категории ) {
       
      }
  • Андрей12 сентября 2015 в 22:09 #

    Здравствуйте! А как вывести рубрики со ссылками + рядом количество постов в них?

    • Миша13 сентября 2015 в 08:09 #

      Здравствуйте!
      Внутри цикла foreach следующий код:

      echo '<a href="'. get_term_link( $category ) . '">' . $category->cat_name . ' (' . $category->count . ')</a> ';

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

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Миша: Добрый день! В принципе вам только немного нужно доработать код из этого поста - категории уже есть, цена - это и так...

  • eveniy: Добрый день Михаил, подскажите на примере как добавить свои произвольные поля в в вашу форму фильтрации: Я так понимаю...

  • Миша: Отлично! )

  • Дмитрий: сам разобрался: в настройках кастомного типа записи недавно оптимизировал настройки и переоптимизировал: в аргументе 'ta...

  • Дмитрий: У меня по какой-то причине пропало отображение (как в колонке меню слева, так и метабокс в записях ) раздела рубрик для...