wp_list_categories

Эта функция определена в файле wp-includes/category-template.php (используется вместо устаревших функций list_cats и wp_list_cats).

Выводит список категорий (рубрик) в виде ссылок. (Щелчок на ссылке категории открывает страницу с записями в данной категории, см. Category TemplateTemplate Hierarchy rules).

<?php wp_list_categories( $args ); ?>

где по умолчанию

<?php $args = 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'            => ,
'exclude_tree'       => ,
'include'            => ,
'current_category'   => 0,
'hierarchical'       => true,
'title_li'           => __( 'Categories' ),
'number'             => NULL,
'echo'               => 1,
'depth'              => 0 ); ?>

Аргументы можно разделять символом &:

<?php wp_list_categories('аргумент1=значение&аргумент2=значение&...'); ?>

Описание параметров

параметрзначение (по умолчанию)
show_option_allstring
непустое значение – не показывать
пустое - показывать ссылку на все категории
orderbystring
сортировка категорий
ID  - по id
name - по имени
slug - по адресу
count – по числу записей
term_group  -
orderstring
порядок сортировки:
ASC - в алфавитном порядке (в порядке возрастания)
DESC
show_last_updatedboolean
1 (true) – показывать время последнего обновления
0 (false) - не показывать
stylestring
в виде неупорядоченного списка:
list  - как элементы списка
none – элементы разделяются тегом <br>
***
Для задания стиля можно использовать CSS-селекторы списка:
li.categories /* внешний элемент */
li.cat-item /* элемент */
li.cat-item-7 /* для ID=7 */
li.current-cat /* текущий элемент */
li.current-cat-parent /* родитель текущего элемента */
ul.children /* потомок */
show_countboolean
0 (false) – не показывать количество записей
1 (true) – показывать
hide_emptyboolean
0 (false) – показывать
1 (true) – не показывать категории без записей
use_desc_for_titleboolean
0 (false) - не показывать
1 (true) –  показывать описание категории как атрибут ссылки title
child_ofinteger
показывать только категории, дочерние для категории с заданным id
feedstring
показывать ссылку на фид (rss-2) каждой категории с заданным текстом>
feed_typestring
тип фида
feed_imagestring
URI для рисунка фида-ссылки на фид (rss-2) (переопределяет feed)
excludestring
исключение категорий с id, указанными через запятую в порядке возрастания. child_of автоматически отключается
exclude_treestring
исключение дерева категорий
includestring
включение категорий с id, указанными через запятую в порядке возрастания
current_categoryinteger
выделение текущей категории (CSS-класс ' current-cat') (обычно текущая категория выделяется на страницах архивов категорий)
hierarchicalboolean
подкатегории в виде иерархии
1 (true) – внутренний список ниже родительской категории с отступами
0 (false) – на одной строке
title_listring
заголовок списка категорий (Categories):
wp_list_categories('title_li=<h2>' . __('Разделы') . '</h2>' );
Без заголовка:
wp_list_categories('title_li=' );
numberinteger
количество отображаемых категорий (определяет SQL LIMIT), по умолчанию ограничения нет
echoboolean
1 (true) – выводить категории
0 (false) – сохранять в переменную
depthinteger
показывать
0  – все категории и все дочерние категории
-1 – все категории без отступов
1 – только категории верхнего уровня
n – ограничение уровня вложенности категорий (переопределяет hierarchical )

Примеры

Количество записей в категории без скобок

Когда show_count=1, после имени каждой категории в скобках приводится количество записей в категории. Удалить скобки можно так:

<?php
$variable = wp_list_categories('show_count=1&title_li=<h2>Все разделы</h2>');
$variable = str_replace(array('(',')'), '', $variable);
echo $variable;
?>

Только ссылки на категории верхнего уровня

Если записей и подкатегорий очень много, можно показывать только категории верхнего уровня. Для этого нужно отменить отображение дочерних категорий(depth=1) и не переопределять отображение количества записей, применяемое по умолчанию(show_count=0):

<?php wp_list_categories('depth=1&title_li=<h2>Главные разделы</h2>'); ?>

Если заголовок списка категорий отображается отдельно как html-элемент, его нужно не показывать как элемент списка, т.е. задать пустой заголовок (title_li=):

<h2>Главные разделы</h2>
<?php wp_list_categories('depth=1&title_li='); ?>

6 комментариев: wp_list_categories

  1. Дмитрий говорит:

    Спасибо, отличная статья! С легкостью все настроил!

  2. Сергей говорит:

    Подскажите, как добавить доп. теги к элементам списка? Я, к примеру, хочу выделить категории заголовком h2. before_link и after_link здесь не работают.

    • Владимир говорит:

      Просто поставь теги перед wp_list_categories('style=none')

      • Владимир говорит:

        Не видно кода увы

        • Admin говорит:

          Если ввести код в визуальном редакторе, в текстовом вместо тегов появятся html-сущности.
          Вот теги вставлены как html-сущности:
          <h2>внутри тега заголовка h2</h2>

          < - набрать без пробелов & l t ;
          > - набрать без пробелов & g t ;

  3. Александр говорит:

    Не работает параметр depth=1, то показывает бесконечную вложенность подкатегорий. Как вывести только дочерние категории первого уровня.
    $args = array(
    'depth' => 1,
    'child_of' => $id,
    'taxonomy' => 'category', // название таксономии
    'show_count' => 0, // не показываем количество записей
    'pad_counts' => true, // не показываем количество записей у родителей
    'title_li' => '', // список без заголовка
    'hide_empty' => 0,
    'exclude' => '',
    'number' => '0');

    вот код в котором не работает depth

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *