Удобная функция для вывода категорий в WordPress. Очень широко используется в плагинах и темах. Хотя лично я вместо неё предпочитаю get_terms().
get_categories( $args = '' )
category
(т.е. рубрики).Все остальные параметры переменной $args полностью идентичны параметрам массива $args функции get_terms().
Функция возвращает массив, состоящий из объектов категорий (или других таксономий), удовлетворяющих заданным критериям. Каждый из объектов содержит информацию о категории, например ID, название, ярлык, описание и т.д. Содержимое объекта я уже рассматривал тут.
Напоминаю, что подробное описание всех параметров есть в документации функции get_terms().
$all_categories = get_categories('fields=names'); echo implode(', ', $all_categories); // функция implode() преобразует массив в строку
Для получения ссылки на страницу архива рубрики можно использовать функции get_category_link() или get_term_link().
$all_categories = get_categories('hide_empty=0'); $category_link_array = array(); foreach( $all_categories as $single_cat ){ $category_link_array[] = '<a href="' . get_category_link($single_cat->term_id) . '">' . $single_cat->name . '</a>'; } echo implode(',', $category_link_array);
На момент написания этой статьи подобная навигация по рубрикам стоит у меня на блоге. На самом деле делается это совсем не трудно. Буквально одна строчка JavaScript — и всё готово.
$all_categories = get_categories(); if( $all_categories ){ // выводить пустой список в случае, если рубрик нет, ни к чему echo '<select onchange="document.location.href=this.options[this.selectedIndex].value;"><option value="">Выберите категорию</option>'; foreach( $all_categories as $single_cat ){ echo '<option value="' . get_category_link($single_cat->term_id) . '">' . $single_cat->name . '</option>'; } echo '</select>'; }
Начиная с версии WordPress 2.7.0 параметр таксономии taxonomy
можно пропустить через фильтр.
function change_taxonomy_for_get_categories($taxonomy, $args){ // $taxonomy - таксономия по умолчанию, т е либо category, либо то, что было передано в параметрах функции // $args - все параметры функции return 'post_tag'; // в качестве таксономии задали метки поста } add_filter('get_categories_taxonomy', 'change_taxonomy_for_get_categories', 20, 2);
Если просто вставить этот фильтр в functions.php
вашей темы, то функция get_categories()
уже будет работать неправильно — вместо рубрик возвращать метки.
Используйте этот фильтр при необходимости и с осторожностью.
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Подскажите пожалуйста, есть шаблон category.php.
Есть рубрики. В некоторых есть вложенные. Как выводить на странице site.ru/rubrika1 - вложенные рубрики и записи в них?
Не универсальное решение - сделать индивидуальный шаблон и по ID вывести...
Хотелось бы универсальное.
Сформулирую иначе.
Все публикации на сайте входят в рубрику Статьи. В рубрике Статьи много вложенных рубрик.
Как по адресу site.ru/vse-stati вывести все в таком виде
Название подрубрики (кликабельное)
-запись вложенной рубрики.
-запись вложенной рубрики.
Название подрубрики (кликабельное)
-запись вложенной рубрики.
-запись вложенной рубрики.
Как раз таки при помощи
get_categories()
(обязательно используем параметр parent или child_of), а внутри цикла можно будет запустить ещё WP_Query.А что-то ближе к коду можно? :о)
Разобрался. Спасибо за подсказку. Осталось прикрутить только проверку на наличие вложенных/дочерних рубрик.
В целом все верно, но так было бы получше:
Взято из каментов к оф докам
у меня в шаблоне страница карат сайта не выводит подрубрики.
у меня в атрибутах страницы выбран шаблон map.php
вот код map.php:
пожалуйста, скажите как добавить сюда вывод подкатегорий в функцию get_categories
Используйте пожалуйста кнопки редактора для вставки кода, не надо мне тут помойку устраивать.
очень жду от вас помощи. спасибо
Измените строчку:
на:
.