Вывод категорий для поста через функцию get_the_category
Приветствую всех читателей блога WordPress Inside в 2011 году, поздравляю с наступившими и наступающими праздниками, желаю много здоровья, счастья и радости на следующие 360 дней. Как и обещал в своей статье про планы на будущий 2011 год занимаюсь по чуть-чуть улучшением всех своих основных блогов – обновляю системы, ставлю последние версии плагинов и копаюсь в шаблонах ради оптимизации и исправления ошибок. Работал это крайне сложная, я бы даже сказал очень кропотливая – находишь одну неточность, решаешься ее исправить и перед тобой 5 отдельных проектов, для каждого из которых нужно внести правки. Ну, раз я уже запланировал все это сделать, назад дороги нет, заодно в процессе получаю дополнительный опыт создания блогов на wordpress и уже нашел штук 5-6 тем для новых постов в блог:) Сегодня поговорим о категориях и функциях для их отображения.
В одной из прошлых статей блога я публиковал хак который помогает убрать ненужный текст из атрибута title для ссылок категорий. Данное решение использовалось для функции вывода списка категорий в сайдбаре с помощью функции wp_list_categories. На выходе вы получали записи вроде этой:
<a href="http://wordpressinside.ru/category/security/" title="Просмотреть все записи в рубрике «Безопасность»">Безопасность</a>
Если уж для seo атрибут title имеет хоть какое-то значение, то куда полезнее там было бы разместить просто название категории, а не весь этот ненужных текст. Собственно, указанная выше ссылка на хак помогала решить эту проблему. Но вот ни задача, все это было справедливо (работало) для функции списка категорий wp_list_categories, которая позволяла предварительно обработать полученный список не выводя его сразу же. Но что делать с другими функциями для вывода категорий? – вот в чем вопрос.
Например, я сегодня совершенно случайно обнаружил, что куча ненужного текста в атрибут title ссылки пишется и при отображении списка категорий для конкретного поста.

Вся проблема заключалась в том, что здесь используется функция the_category, для которой, к сожалению, нельзя задать параметр, чтобы результат ее вызова не отображался сразу. Зато в вордпресс есть еще одна функция get_the_category, которая возвращается массив объектов категорий для конкретного поста.
Функция get_the_category
Синтаксис функции get_the_category достаточно прост:
<?php get_the_category( $id ) ?>
где параметр id это учетная запись поста для которого будут выводить категории. Куда более интересными есть примеры использования функции.
Отображение первой категории для поста
<?php $category = get_the_category(); echo $category[0]->cat_name; ?>
Программисты знают, что нулевой параметр массива выводит первый элемент, собственно это и объясняет принцип работы данного кода.
Как получить категории вне цикла Loop
<?php global $post; $categories = get_the_category($post->ID); var_dump($categories); ?>
Для этого в качестве параметра функции нужно передавать id поста, что и происходит в коде.
Вывод названия категории без ссылок
Кстати, данную функцию я использую в некоторых сайтах, чтобы выводить название категории поста, но без активной ссылки – так просто дополнительный полезный текст на странице. В таком случае можно применить код:
<?php foreach((get_the_category()) as $category) { echo $category->cat_name . ' '; } ?>
Убираем из title категории лишний текст
Ну, и напоследок, немного поразмыслив получился хак для вывода списка категории для поста без использования функции the_category, которую мы успешно заменяем на get_the_category. Если вы хотите добавить код непосредственно в то место шаблона, где выводятся категории, например, файл archive.php, то пишем что-то вроде:
Категория: <?php foreach((get_the_category()) as $category) { echo '<a href="'.get_category_link($category->cat_ID).'" title="'.$category->cat_name.'">'.$category->cat_name.'</a>; '; } ?>
Можно, в принципе разместить код для отображения категорий в файле функций, а потом в файлах шаблона поменять the_category на новую функцию, например, под названием my_thecat(). Конечно, не забудьте предварительно перед заменой добавить соответствующий код в файл функций functions.php:
function my_thecat() { global $post; foreach((get_the_category($post->ID)) as $category) { echo '<a href="'.get_category_link($category->cat_ID).'" title="'.$category->cat_name.'">'.$category->cat_name.'</a>; '; } }
Потестировал, все работает. Остается лишь один вопрос – насколько это все полезно и крайне необходимо. Если у вас один блог с постоянным дизайном, который вы хотите сделать самым лучшим, то можно потратить пару минут и внести соответствующие изменения. В случае если у вас таких блогов много, думаю, особой seo выгоды манипуляция с title не принесет в плане, проще купить ссылок в Rotapost на все эти проекты – кстати эксперимент по подъему тИЦ в системе успешно и позитивно завершен, скоро будет отчет об этом.
P.S. Постовой. В одном из блогов рунета была найдена замечательная подборка темwordpress портфолио из 17-ти бесплатных качественных шаблонов.
Статьи в блоге получается безжизненными и унылыми? – читаем как увеличить ценность поста и добавляем в свои публикации либо изюминку, либо перчинку.
Комментариев - 9 к статье “Вывод категорий для поста через функцию get_the_category”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Добавление миниатюры (thumbnail) в RSS для wordpress
- Category SEO Meta Tags – МЕТА данные для категорий и тегов
- 10 плагинов для админ панели WordPress
- LinkGator.ru – биржа вечных ссылок и статей
- Смена рубрики и массовое редактирование wordpress постов
- Paylicense – хостинг с широким спектром услуг
- WP-RecentComments – плагин и виджет последних комментариев
- Безопасность (4)
- Видео (5)
- Возможности (58)
- Начинающим (18)
- Новости (20)
- Оптимизация (13)
- Плагины (66)
- Сервисы (14)
- Хаки и секреты (43)
- Шаблоны (13)
- Записи и посты wordpress, оформление записи
- 17 полезных приемов и хаков для WordPress
- Обновление WordPress подробно для начинающих
- Ссылка читать далее в wordpress – тег more
- Как добавить дополнительные кнопки в редактор WordPress
- Что нового в WordPress 3.1
- Похожие статьи в wordpress без плагинов с использованием категорий блога
- Блог про смартфоны
- Seleckis.lv — Журнал Никиты Селецкого
- Блогинг в стиле web 2.0
- Достопримечательности Львова
- Про блоги для блоггеров
- WordpressPlugins.ru
- Ттелефон Explay Titan в Связном
- Ericsson и планка скорости
- Новая линейка от HTC
- Dr.Web Light 7 для Android
- Самый популярный сервис платежей – Яндекс.Деньги
- Моделирование. Этапы моделирования.
- Шопинг в Европе и требуемые документы
- Последняя версия Google Chrome вышла с ошибкой
- Порядка 70 процентов не доводят покупки в сети Интернет до конца
- Рекламу в социальных сетях автоматизирует сервис AdCenter
- Тестирование новой разработки Интернет-агентства Registratura.ru


Оцените статью: 


Категории:
Теги:
как всегда супер! Продолжай в том же духе!
Подскажите как мне в посте, вернее внизу его сделать так, чтобы люди могли переходит к следующему и прошлому посту именно этой категории?
стандартный способ позволяет переход только по времени публикации статей :-(
Siera, нужно искать плагин, уверен есть что-то для решения этой задачи. Я даже вроде бы что-то похожее встречал, но, к сожалению, название не вспомню.
Не подскажите ли, можно сделать вывод конкретной рубрики-категории списком(только заголовок) по алфавиту, может есть какие-то плагины или только в ручную?
Tod
Я пересмотрела уже n° количество плюгинов и пока ничего не нашла :-(
Если вдруг попадётся, сообщите пожалуйста
Офигенная статья, как же я долго это искал!
Спасибо!
Интересный пост, спасибо!
Не подскажите, есть ли возможность исключить некоторые категории поста при выводе их какой-либо из этих функций? Если конкретизировать, то есть некоторые «технические» категории, которые используются для построения структуры сайта и под постом выводить их не нужно, т.к. они бесполезны для пользователя.
Николай, можно добавить проверку в код функции мол если категория=»технической», то не выводить или как-то так. Также я бы глянул функции считывания категорий get_the_category может там есть за что «зацепиться».
Поскольку я чайник, то не забиваю голову всеми этими проблемами – для вывода категорий испоьзую
плагин Most Popular Posts с соответствующими настройками – там имеется возможность вывода наи более популярных из выбранных категорий..