Познакомимся более подробно с функцией отвечающей за вывод рубрик Wordpress в сайдбаре шаблона. Она имеет следующий вид:

wp_list_categories();

Такая запись в коде сайдбара темы Wordpress приводит к выводу рубрик с параметрами по-умолчанию.
Пример:

1
<?php wp_list_categories(); ?>

Вот, что мы увидим в результате:
рубрики Wordpress
Такой вид многих не устроит, тк слово Рубрики не находится в контейнтере заголовка второго уровня.
Попробуем так:

1
2
<h2>Рубрики<h2>
<?php wp_list_categories(); ?>

Увидим это
рубрики wordpress
Что тоже нас не устроит. Все из-за того, что по-умолчанию ф-ция выводит слово Рубрики сама. Можно схитрить:

1
2
3
4
<h2>Рубрики<h2>
<ul>
<?php wp_list_categories('title_li='); ?>
</ul>

Получим:
рубрики wordpress
Как видим мы добились нормального отображения виджета с рубриками в сайдбаре Wordpress указав в параметре title_li к функции wp_list_categories(); значение “пусто”. То же у нас получится, если мы сделаем так:

1
<?php wp_list_categories('title_li=<h2>Рубрики</h2>'); ?>

Давайте что-нибудь нестандартное организуем. Например отобразим в списке рубрики, в которых еще нет записей, ведь по-умолчанию такие рубрики не отображаются в списке:

1
<?php wp_list_categories('title_li=<h2>Рубрики</h2>&hide_empty=0'); ?>

Увидим
рубрики Wordpress
Давайте еще отсортируем по ID

1
<?php wp_list_categories('title_li=<h2>Рубрики</h2>&hide_empty=0&orderby=ID'); ?>

Увидим
рубрики wordpress
Теперь попробуем заставить выделяться текущую рубрику. Для этого создадим новое свойство в css файле для тега а внутри li с классом current-cat, так как каждая “текущая” рубрика, если в нее зайти помещается в контейнер li с таким классом. У себя я должен прописать следующее в css-файле:

1
#sidebar ul li ul li.current-cat a {color: #ff0000;}

Результат:
рубрики wordpress
Ну и кроме этого я еще создал подрубрики или “дочерние рубрики”, если так выразиться.

Бывает так, что нужно исключить из списка определенные рубрики. Это не проблема. Зададим параметр exclude к функции рубрик Wordpress и укажем ему ID лишних для нас категорий:

1
<? wp_list_categories('title_li=<h2>Рубрики</h2>&hide_empty=0&exclude=4,18,16'); ?>

Как видим рубрики пропали из списка
рубрики wordpress
Бывает наоборот - нужно включить лишь некоторые рубрики в список. Включим те, которые мы убрали в прошлом примере:

1
<? wp_list_categories('title_li=<h2>Рубрики</h2>&hide_empty=0&include=4,18,16'); ?>

Результат:
рубрики wordpress
Думаю что общая суть работы с параметрами функции wp_list_categories(); понятна. Пришло время привести списком полезные (но не все существующие) параметры для этой функции. Итак:

*orderby - Параметр, отвечающий за то как будет сортироваться список рубрик.
Значения - ID, name, count, slug. Что соответственно означает - по ID, по имени, по количеству записей в рубрике и по короткой ссылке рубрики. По-умолчанию имеет значение name.
*order - Отвечает за то, как будет сортироваться список - по возрастанию или по убыванию значения заданного в orderby. Значения - ASC и DESC. По-умолчанию ASC.
*style - Определяет стиль отображения рубрик. Либо list (список) либо none - просто список из ссылок на каждую рубрику, но через тег br. По-умолчанию list.
*show_count - Показывать количество записей в рубрике возле ее названия или нет? Значения 1 и 0. По-умолчанию 0 - “не показывать”.
*hide_empty - Отвечает за пустые рубрики. (то есть те, в которых нет записей) Выводить их в список или нет? Значения 1 и 0. По-умолчанию 1 - “скрывать”.
*use_desc_for_title - Использовать ли описание рубрике в параметре title для ссылки на ее архив? Значения 1 и 0. По-умолчанию 1 - “показывать”.
*child_of - Заставляет выводить лишь подрубрики для указанной ей рубрики. При этом выводит и подрубрики без записей. В качестве значения нужно укзать ID нужной рубрики.
*exclude - Исключает указанные рубрики из списка. Значения - ID рубрик.
*include - Включает в список лишь указанные рубрики. Значения - ID рубрик.

Если нужно подключать виджет стандартным образом в боковую колонку, а не прописывать вручную, то можно изменить параметры по-умолчанию для этой функции в файле category-template.php найдя вот такой код:

1
2
3
4
5
6
7
8
9
10
11
function wp_list_categories( $args = '' ) {
	$defaults = array(
		'show_option_all' => '', 'orderby' => 'name',
		'order' => 'ASC', 'show_last_update' => 0,
		'style' => 'list', 'show_count' => 0,
		'hide_empty' => 1, 'use_desc_for_title' => 1,
		'child_of' => 0, 'feed' => '', 'feed_type' => '',
		'feed_image' => '', 'exclude' => '', 'current_category' => 0,
		'hierarchical' => true, 'title_li' => __( 'Categories' ),
		'echo' => 1, 'depth' => 0
	);

и изменив нужные вам значения параметров по-умолчанию.

Комментарии

К этой записи есть 29 коммент.

  1. Алексей - 7 Март 2009 12:25 дп

    Спасибо, весьма полезная статья, если бы не она я бы ещё долго не смог бы победить вывод необходимых рубрик в сайтбаре

  2. Сергей - 26 Март 2009 8:19 пп

    А как убрать надпись “Нет рубрик”?

  3. Сергей - 26 Март 2009 8:21 пп

    И вывести описание категории под каждым заголовком?

  4. admin - 26 Март 2009 11:45 пп

    Надпись “Нет рубрик” пропадает сама при создании хотя бы одной рубрики и присваивании ей одной записи. Ну а описание категории можно достать функцией category_description($category) где $category это либо ее ID либо название.

  5. Серж - 8 Апрель 2009 6:38 пп

    “Ну и кроме этого я еще создал подрубрики или “дочерние рубрики”, если так выразиться.”

    А как? Черкните код.

  6. admin - 8 Апрель 2009 7:09 пп

    Подрубрики я создал не кодом, а из админки перед тем как продемонстрировать пример. Это в Рубрики, Создать новую и при ее создании назначить ей родительской одну из тех, что уже существуют.

  7. Серж - 8 Апрель 2009 8:16 пп

    Я так и делал, но рубрики вперемешку с подрубриками выстраиваются по алфавиту. Хотя в админке написано подрубрика 3.1 входит в рубрику 3.
    Т.е.
    Окунь
    Отдых
    Рыбалка

  8. admin - 8 Апрель 2009 8:22 пп

    А цель какя вообще? :-) Чего добиваемся-то?

  9. Серж - 8 Апрель 2009 8:41 пп

    Добиваемся:

    Рубрика 1
    Подрубрика 1.1
    Подрубрика 1.2
    Рубрика 2
    Подрубрика 2.1

    а сейчас:
    Подрубрика 1.1
    Подрубрика 1.2
    Подрубрика 2.1
    Рубрика 1
    Рубрика 2

  10. admin - 8 Апрель 2009 8:54 пп

    По идее в код нужно добавить еще такой параметр ‘&hierarchical=true’ Он и по-умолчанию должен быть true, но видимо где-то уже поменялся.

  11. Серж - 8 Апрель 2009 9:13 пп

    Насколько я понял имеем это:

    а как надо?

  12. Серж - 8 Апрель 2009 9:54 пп

  13. Серж - 8 Апрель 2009 9:57 пп

    Чего то код не вставляется
    Завтра напишу.

  14. Серж - 9 Апрель 2009 4:09 пп

    Поставил плагин MyCategory Order, рубрики и подрубрики расставил, но хотелось бы еще. что бы подрубрики имели отступ слева, как в Вашем примере.

  15. admin - 9 Апрель 2009 7:16 пп

    Это зависит от шаблона и того, что прописано в его файле стилей. Можете сами написать css-класс с именем .children и задать ему нужный отступ.

  16. dosent - 27 Июнь 2009 3:01 пп

    А как увеличить расстояние между рубриками???

  17. admin - 27 Июнь 2009 10:51 пп

    Задать в css-файле например “margin:15px 0;” для элементов списка

  18. Название рубрики
  19. Или “padding 15px 0;” для них же. Если разбираетесь в css, то это не составит труда.

  • Rush - 26 Июль 2009 12:21 пп

    Спасибо за статью, очень помогла!

  • VRS - 10 Ноябрь 2009 8:02 дп

    Спасибо! перепробовала множество вариантов кодов, но нашла простое решение благодаря Вашей статье. В закладки.

  • Vilonda - 21 Ноябрь 2009 7:27 пп

    Спасибо! Пригодилось.
    Но есть вопрос: Если делаешь, чтобы текущая рубрика отображалась, то ее подрубрики тоже отображаются. Как сделать, чтобы они не отображались?

  • Сергей - 22 Январь 2010 2:11 пп

    Именно то, что искал, по поводу show_count

  • Вадим - 4 Апрель 2010 10:32 дп

    А как сделать чтобы не все рубрики отображались в верхнем меню?
    За статью большое спасибо!

  • Вадим - 4 Апрель 2010 1:34 пп

    Не правильно выразился.
    Как сделать чтобы не все рубрики отображались в верхнем меню, но все отображались в боковом?

  • Borigen - 24 Май 2010 1:34 пп

    Сделал подсветку выбранной рубрики, замечательно! Но.. выделяется цветом только тогда, когда находишься на странице с перечнем статей рубрики, а если выбираешь конкретную статью, входящую в эту рубрику, то цветовое выделение пропадает. Возможно ли это исправить, если да, то как?

  • okylesya - 6 Июнь 2010 9:10 дп

    Всем привет!!! Делая рубрики мои мозги атрофировались и теперь я плохо соображаю, короче - нужна помощь !
    У меня вот так рубрики состоят :
    Анапа
    Джемете
    Витязево
    Геленджик
    Кабардинка
    А я хочу сделать вот так!
    АНАПА - заголовок (не ссылка)
    -Анапа
    -Джемете
    -Витязево
    Геленджик -заголовок (не ссылка)
    -Геленджик
    -Кабардинка
    Если не трудно напишите как сделать

  • okylesya - 6 Июнь 2010 10:27 дп

    Всё сделал -дошло )))

  • VRS - 27 Июнь 2010 1:47 дп

    slug - это сортировка по короткой ссылке рубрики

  • admin - 27 Июнь 2010 1:59 дп

    Спасибо, поправил. Знаю это конечно, но на момент написания статьи еще не был осведомлен.

  • Антон - 4 Июль 2010 10:14 дп

    Здравствуйте!
    Спасибо за подробную инструкцию.

    Подскажите как сделать меню как здесь www(точка)ringo-kzn(точка)ru
    чтобы меню работало в сайдбаре попринципу
    если открыта рубрика1, то
    Рубрика1
    -подрубрика1
    -подрубрика2
    Рубрика2
    Рубрика3

    если открыта рубрика 2, то
    Рубрика1
    Рубрика2
    -подрубрика1
    -подрубрика2
    Рубрика3

  • Оставить комментарий или два