wp_list_categories()
Выводит список категорий в виде ссылок. Если перейти по ссылке, то будут показаны все посты из категории.
Хуки из функции
Возвращает
null|Строку|false
. HTML код если echo=1. Если echo=0 вернет HTML код в переменную для дальнейшей обработки.
Шаблон использования
$args = array( 'show_option_all' => '', 'show_option_none' => __('No categories'), 'orderby' => 'name', 'order' => 'ASC', 'style' => 'list', 'show_count' => 0, 'hide_empty' => 1, 'use_desc_for_title' => 0, 'child_of' => 0, 'feed' => '', 'feed_type' => '', 'feed_image' => '', 'exclude' => '', 'exclude_tree' => '', 'include' => '', 'hierarchical' => true, 'title_li' => __( 'Categories' ), 'number' => NULL, 'echo' => 1, 'depth' => 0, 'current_category' => 0, 'pad_counts' => 0, 'taxonomy' => 'category', 'walker' => 'Walker_Category', 'hide_title_if_empty' => false, 'separator' => '<br />', ); echo '<ul>'; wp_list_categories( $args ); echo '</ul>';
Использование
<ul> <?php wp_list_categories( $args ); ?> </ul>
Аргументы параметра $args
Кроме указанных ниже параметров может принимать параметры get_terms().
- child_of(число)
- Показать дочерние категории. В параметре указывается ID родительской категории (категория, вложенные категории которой нужно показать).
- current_category(строка/массив)
ID категории или массив из ID. К которым нужно добавить класс
current-cat
(class="current-cat"). Это нужно, чтобы подсветить категорию через CSS стили.В нормальном режиме такой класс добавляется к текущей категории на странице категорий. Этот параметр нужен, чтобы, например, добавить этот класс на отдельных страницах, которые не относятся к текущей категории.
С версии 4.4. в этот параметр можно передавать массив ID.
По умолчанию: ''- depth(число)
Этот параметр контролирует глубину вложенности категорий, которые будут показаны. По умолчанию
0
- показывать все уровни вложенности (все дочерние категорий). С версии 2.5.0
- все уровни вложенности (По умолчанию);-1
- показать все дочерние категории, но без вложенности li списков. Отменяет параметрhierarchical
;1
- показать только категории первого уровня (все виды вложенных категорий не будут показываться);n
- число - глубина вложенности которую нужно показывать.2
- покажет категорий первого и второго уровня.
- echo(логический)
Выводить на экран или возвращать для обработки.
1 (true)
- да, выводить на экран;0 (false)
- нет, просто возвратить данные.
По умолчанию: true
- exclude(строка)
Исключить категории из списка. Нужно указывать ID категорий через запятую.
- Если этот параметр указан, параметр
child_of
будет отменен. - Если параметр
heiararchical=true
, то будет исключаться вся ветка. Еслиheiararchical=false
, то для исключения ветки используйте параметрexclude_tree
.
По умолчанию: ''
- Если этот параметр указан, параметр
- exclude_tree(строка)
- Исключить дерево категорий из списка. Указывайте ID категорий через запятую. Параметр include должен быть пустым. Если параметр
heirarchical=true
, то используйте exclude вместо exclude_tree.
По умолчанию: '' - include(строка / массив)
- Вывести списком только указанные категории. Список ID категорий проходит через wp_parse_id_list, поэтому можно указывать ID строкой через запятую или массивом.
По умолчанию: '' - hide_empty(логический)
Скрывать ли категории в которых нет записей?
0 (false)
- показывать пустые (не скрывать);1 (true)
- не показывать пустые категории (скрывать).
По умолчанию: 1
- hide_title_if_empty(логический)
- Нужно ли прятать
$title_li
если в списке нет элементов. С версии 4.4.
По умолчанию: false (всегда будет показываться) - hierarchical(логический)
Показывать категории как дерево. Показывать вложенные (дочерние категории), как вложенный список.
1 (true)
- да, древовидный тип отображения;0 (false)
- нет, показать сплошным типом.
По умолчанию: true
- order(строка)
Направление сортировки:
ASC
- по порядку, от меньшего к большему (1, 2, 3; a, b, c);DESC
- в обратном порядке, от большего к меньшему (3, 2, 1; c, b, a).
По умолчанию: 'ASC'
- orderby(строка)
Сортировка списка по определенным критериям. Например по количеству постов в каждой категории или по названию категорий. Доступны следующие критерии:
ID
- сортировка по ID;name
- сортировка по названию (по умолчанию);slug
- сортировка по алт. имени (slug);count
- по количеству записей в категории;term_group
- по группе.
По умолчанию: 'name'
- separator(строка)
- Разделитель между элементами. С версии 4.4.
По умолчанию: '<br />' - show_count(логический)
Показывать/нет количество записей в категории. Число записей будет показано после названия категории в скобках (например, Психология (16)).
1 (true)
- показывать количество записей;0 (false)
- не показывать количество записей.
- show_option_all(строка)
Текст для отображения всех категорий.
Если передать не пустую строку, например
'Все категории'
, то в список будет добавлена ссылка на все категории (часто это ссылка на главную страницу блога). Текстом ссылки станет текст переданный параметру, в данном случаеВсе категории
.
По умолчанию: ''- show_option_none(строка)
- Если функция не нашла ни одной категории для показа, то будет показан этот текст.
По умолчанию: 'Нет рубрик' - style(строка)
Стиль вывода списка.
list
- означает, что нужно выводить списком в теге<li>
, вложенность категорий будет соблюдена.none
- будут выведены только ссылки на категории (<a>) разделенные тегом<br>
.
По умолчанию: 'list'
- taxonomy(строка)
- Название таксономии, которую нужно обрабатывать.
По умолчанию: 'category' - title_li(строка)
- Установить заголовок списка. Если изменить этот параметр на '' (
title_li=
), то заголовок не будет выводиться вовсе.
По умолчанию: 'Категории' - use_desc_for_title(логический)
Вставлять ли описание категории в атрибут
title
у ссылки (<a title="Описание категории" href="...
):1 (true)
- да, вставлять описание в title, если оно есть;0 (false)
- нет, не использовать описание (будет: Посмотреть все записи в рубрике "название категории").
По умолчанию: false
- number(число)
- Установить максимальное количество отображаемых категорий (SQL LIMIT). По умолчанию выводится без ограничений.
По умолчанию: '' - pad_counts(логический)
- Считать общее количество постов во вложенных категориях и показывать это число рядом с родительской категорией. Параметр включается автоматически при включенных
show_count
иhierarchical
.
По умолчанию: 0 (false) - feed(логический)
- Показать ли рядом с названием ссылку на RSS фид (rrs-2) категории. Текст переданный в этом параметре станет текстом ссылки.
По умолчанию: '' - feed_type(строка)
- Тип фида
По умолчанию: 'rss-2' - feed_image(строка)
- Показать ли рядом с названием ссылку-картинку на RSS фид (rrs-2) категории. В параметре нужно указать ссылку на картинку. Если этот параметр указан, параметр
$feed
будет отменен.
По умолчанию: '' - walker(объект)
- Расширение объекта (класса), который предназначен для создание списка категорий. Передаваемый параметру объект - это расширение для класса
Walker_Category
илиWalker
.
По умолчанию: 'Walker_Category'
Примеры
#1 Сортировка по алфавиту
Для того, чтобы отсортировать категории по алфавиту (orderby=name) и включить в список только категории с ID равными 16, 3, 9 и 5 (include=3,5,9,16), можно использовать следующий код:
<ul> <?php wp_list_categories('orderby=name&include=3,5,9,16'); ?> </ul>
#2 Сортировка по названию
Следующий пример сортирует категории по названию (orderby=name
), показывает количество записей в каждой категории (show_count=1
) и исключает из списка категорию с ID 10 (exclude=10
):
<ul> <?php wp_list_categories('orderby=name&show_count=1&exclude=10'); ?> </ul>
#3 Выводим только указанные рубрики
Этот пример покажет список только из категорий с ID 9, 5 и 23, и изменит заголовок списка на Поэзия
, который будет заключен в теги <h2>
:
<ul> <?php wp_list_categories('include=5,9,23&title_li=<h2>' . __('Poetry') . '</h2>' ); ?> </ul>
#4 Выведем только дочерние категории
Для того, чтобы вывести только категории вложенные в категорию 8 (child_of=8) и отсортировать их по ID (orderby=id), так же показать количество записей в каждой категории (show_count=1) и убрать из атрибута title
описание категорий (use_desc_for_title=0) используйте следующий вызов функции wp_list_categories
:
<ul> <?php wp_list_categories('orderby=id&show_count=1&use_desc_for_title=0&child_of=8'); ?> </ul>
#5 Удалим скобки, в которые обрамляется количество записей в каждой категории
Для этого получим список категорий в переменную (echo=0) и пропустим её через php функцию str_replace()
, которая удалит скобки:
<?php $cats = wp_list_categories('echo=0&show_count=1&title_li=<h2>Категории</h2>'); $cats = str_replace( ['(',')'], '', $cats ); echo $cats; ?>
#6 Покажем список категорий со ссылкой на RSS-ленту
Для этого используем параметр feed=RSS
, так же в этом примере список будет отсортирован по названию категорий (orderby=name) и у каждой категории будет показано количество записей (show_count=1):
<ul> <?php wp_list_categories('orderby=name&show_count=1&feed=RSS'); ?> </ul>
#7 Если нужно показать ссылку-картинку вместо текста ссылки RSS фида, то используем параметр feed_image
:
<ul> <?php wp_list_categories('orderby=name&show_count=1&feed_image=/images/rss.gif'); ?> </ul>
#8 Выводим список произвольной (пользовательской) таксономии
С версии 3.0 стало возможно выводить списки произвольных таксономий через параметр taxonomy
. Так же в этом примере показывается как передавать параметры не строкой, а массивом:
<?php // список разделов произвольной таксономии genre $args = array( 'taxonomy' => 'genre', // название таксономии 'orderby' => 'name', // сортируем по названиям 'show_count' => 0, // не показываем количество записей 'pad_counts' => 0, // не показываем количество записей у родителей 'hierarchical' => 1, // древовидное представление 'title_li' => '' // список без заголовка ); ?> <ul> <?php wp_list_categories( $args ); ?> </ul>
#9 CSS классы для стилизации li списка
CSS Классы создается автоматически функцией wp_list_categories()
. Начальное обрамление (в тег ul) задается произвольно, поэтому класс списку можно задать произвольный. А для li тега используются следующие css классы:
li.categories { ... } /* общий селектор */ li.cat-item { ... } li.cat-item-7 { ... } /* Рубрика с ID 7 */ li.current-cat { ... } li.current-cat-parent { ... } ul.children { ... }
#10 Уберем заголовок списка категорий
С помощью обнуления параметра title_li
. По умолчанию этот параметр равен __('Categories')
, если установить его в null
или ''
, заголовок списка не будет показан вообще. Следующий пример исключает категории 4 и 7, и убирает заголовок списка категорий:
<ul> <?php wp_list_categories('exclude=4,7&title_li='); ?> </ul>
Заметки
Добавленные параметры в разных версиях:
- 2.3.0 —
echo
- 2.5.0 —
depth
- 2.6.0 —
current_category
- 2.7.1 —
exclude_tree
- 2.9 —
pad_counts
- 3.0 —
taxonomy
- 4.4 —
hide_title_if_empty
иseparator
.current_category
стал не обязательным
Список изменений
С версии 2.1.0 | Введена. |
С версии 4.4.0 | Introduced the hide_title_if_empty and separator arguments. |
С версии 4.4.0 | The current_category argument was modified to optionally accept an array of values. |
С версии 6.1.0 | Default value of the 'use_desc_for_title' argument was changed from 1 to 0. |