Эта функция довольно часто используется в темах WordPress для создания меню. А так же с её помощью очень удобно выводить виджет со списком категорий в сайдбаре. Когда я говорю список, я имею ввиду HTML-список.
Если же вам нужно вывести рубрики к текущей записи или к записи с указанным ID — воспользуйтесь функцией the_category() или get_the_category().
А теперь рассмотрим простейший пример:
wp_list_categories('orderby=name');
Этот код выведет список категорий, отсортированных по имени. Вот как это будет выглядеть в HTML, самый обычный список со ссылками:
<li class="categories">Рубрики <ul> <li class="cat-item cat-item-1"> <a href="http://ваш_сайт.com/category/plugins" title="Просмотреть все записи в рубрике «Плагины»">Плагины</a> </li> <li class="cat-item cat-item-3"> <a href="http://ваш_сайт.com/category/themes" title="Просмотреть все записи в рубрике «Темы»">Темы</a> </li> </ul> </li>
Теперь добавим несколько параметров
wp_list_categories('orderby=name&style=none&title_li=');
Оставляем сортировку по имени, но теперь категории будут выводиться не через <li>-список, а просто в виде ссылок (каждая с новой строки), пустой параметр title_li означает, что не нужно добавлять заголовок. Вот, как это выглядит в HTML-коде:
<a href="http://ваш_сайт.com/category/plugins" title="Просмотреть все записи в рубрике «Плагины»">Плагины</a><br /> <a href="http://ваш_сайт.com/category/themes" title="Просмотреть все записи в рубрике «Темы»">Темы</a><br />
Понятно, что чем больше вы засунете параметров в скобки, тем труднее будет во всем этом разобраться в дальнейшем, поэтому есть ещё один вариант записи.
Сначала идёт присвоение значений массиву $args, а потом он просто указывается в скобках.
$args = array( 'orderby' => 'name', 'style' => 'none', 'title_li' => '' ); wp_list_categories($args);
Теперь посмотрим, какие ещё могут быть параметры у функции:
show_option_all
(строка) Нужно ли добавить ссылку на главную страницу? Можно указать любое значение, например ‘На главную’ — оно и будет анкором для ссылки.
orderby
(строка) Каким образом вы хотите отсортировать категории?
order
(строка) Устанавливает порядок сортировки.
style
(строка) Стиль вывода списка категорий.
show_count
(логическое) Указывает в скобках количество постов в каждой из рубрик.
hide_empty
(логическое) Нужно ли исключить пустые рубрики (категории) из списка?
use_desc_for_title
(логическое) Нужно ли использовать описание рубрик в атрибуте title для ссылок, если оно имеется. (пример: <a title="Описание_категории" href="…)
child_of
(целое число) Нужно указать id рубрики, подрубрики которой вы хотите вывести.
feed
(строка) Рядом с каждой категорией вставляет ссылку на RSS-ленту. Указанное значение будет анкором этих ссылок.
feed_image
(строка) Аналогичен предыдущему параметру, но только вставляет ссылку с картинкой. В качестве значения укажите адрес картинки.
feed_type
(строка) Тип RSS-ленты.
exclude
(целое число) Перечислите через запятую id категорий, которые вы хотите исключить из списка.
exclude_tree
(целое число) Исключить рубрику и все её подрубрики из списка. Работает только при выключенном hierarchical.
include
(целое число) Укажите через запятую категории (их id), которые вы хотите включить в список.
hierarchical
(логическое) Нужно ли создавать вложенные списки для подкатегорий?
title_li
(строка) Заголовок для списка категорий. По умолчанию __( ‘Categories’ ). То есть в русском WordPress это будет переведено в «Рубрики». Оставьте параметр пустым, чтобы избавиться от заголовка.
number
(целое число) Сколько категорий нужно отобразить в списке?
echo
(логическое) Вывод списка категорий или сохранение результата в переменную.
depth
(целое число) Количество уровней вложенности списка.
taxonomy
(строка) Выберите таксономию для вывода:
current_category
(целое число) Укажите id категории из списка, для которой вы хотите добавить css-класс «current-cat». По умолчанию он добавляется к той категории, в которой в данный момент находится пользователь.
$args = array( 'show_option_all' => 'Перейти на главную', 'orderby' => 'name', 'order' => 'desc', 'style' => 'list', 'show_count' => 1, 'hide_empty' => 0, 'use_desc_for_title' => 1, 'feed' => 'RSS', 'exclude' => '4,3', 'exclude_tree' => 7, 'hierarchical' => 1, 'title_li' => 'Мои рубрики', 'echo' => 1, 'depth' => 0 ); wp_list_categories($args);
Вот как это будет выглядеть в итоге:
<li class="categories">Мои рубрики <ul> <li> <a href="http://ваш_сайт.com">Перейти на главную</a> </li> <li class="cat-item cat-item-2"> <a href="http://ваш_сайт.com/category/ярлык_рубрики" title="описание_рубрики">название_рубрики</a> (<a href="http://ваш_сайт.com/category/ярлык_рубрики/feed" title="RSS">RSS</a>) (0) </li> <li class="cat-item cat-item-1"> <a href="http://ваш_сайт.com/category/ярлык_рубрики" title="описание_рубрики">название_рубрики</a> (<a href="http://ваш_сайт.com/category/ярлык_рубрики/feed" title="RSS">RSS</a>) (1) <ul class='children'> <li class="cat-item cat-item-5"><a href="http://ваш_сайт.com/category/ярлык_рубрики/ярлык_рубрики" title="описание_рубрики">название_рубрики</a> (<a href="http://ваш_сайт.com/category/ярлык_рубрики/ярлык_рубрики/feed" title="RSS">RSS</a>) (0) </li> </ul> </li> </ul> </li>
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
а что такое анкор?
это текст ссылки) например, <a href="адрес_ссылки">анкор<a>
Я думаю, что сайт сделан на уровне! Приятно находится! На по гугл +1! )
И вопрос: а как вывести заголовок текущей категории? в single.php
спс) используй функцию the_category() например, есть и другие варианты, но там побольше кода уже)
А как указать путь к картинке категории, параметр feed_image ?
И как сделать, чтобы картинка выводилась перед названием категории, а не за ней?
Подскажите, как добавить доп. теги к элементам списка? Я, к примеру, хочу выделить категории заголовком h2. before_link и after_link здесь не работают.
как вариант:
как к аргументу show_count присвоить свой стиль css?
Добрый день.
Тоже интересует вопрос – как присвоить стиль к show_count?
Добрый день!
Тут можно поступить так - присваиваете стиль к элементу li (он же и будет применяться для show_count), а потом отдельно для элемента а.
Михаил, я нашел на разработанном вами сайте пример, что именно требуется – http://rghost.ru/78nZ6gFFc. Как это реализовать:
"Название рубрики"
(число)
Я правильно понимаю, что требуется править файл category-template.php?
Ни в коем случае не надо, используйте функцию get_categories().
А почему? Якобы после обновления движка все слетит? Я просто уже сделал у себя на сайте. А как использовать get_categories() я не знаю. Может на статью кинете ссылку - разберусь с этой темой?)
Как сделал - можете по ссылке посмотреть – http://seo-drojji.ru/bez-rubriki/
Не только, могут появиться баги или сбои с работе движка (даже незаметные).
Ссылку на описание функции я оставил в предыдущем комментарии.
Ооох. Сложно как-то все описано:) Ладно, буду дальше искать ответ.
Пожалуйста :)
Если будут вопросы по коду, спрашивайте пожалуйста — буду рад вам помочь, если будет время.
Михаил, а этот код куда необходимо вставлять? sidebar.php? У меня просто реализовано через виджеты вывод рубрик.
Рекомендую заняться созданием своего виджета для этих целей: https://misha.agency/blog/wordpress/widgets.html#add_widget
Вроде разобрался, но не знаю так или не так я сделал...Могли бы вы посмотреть на сайте? Код очень большой, чтобы его присылать:)
Можно еще вопрос: в раздел рубрик я добавил текстовые поля (http://seo-drojji.ru/bez-rubriki/). На первой странице записи отображаются, но на второй (http://seo-drojji.ru/bez-rubriki/page/2/) текст скрывается (так необходимо) и записи "наезжают" друг на друга (так не должно быть). С чем это может быть связано?!
Вроде всё окей. А то, что текст исчезает — возможно для вывода второй страницы у вас используется файл
pages.php
?Код для вывода рубрик сайта, который вы указали выше, не добавляется класс "current-cat" для выбранного раздела. Это можно реализовать в виджете?
Можно.
А какой код необходимо использовать для виджета?
Просто добавьте условие, совпадает ли
$single_cat->term_id
сget_query_var('cat')
.Подскажите, как вывести категории без сортировки в моем порядке. я в include указал id категорий через запятую.
Попробуйте
orderby=none
.пробовал. не отключается :(. проблему решил используя orderby=slug и пришлось менять имя ярлыков для упорядочения
Та да, я тоже давно с этим мучался, то, что рубрики не имеют возможности сортировки по установленному порядку, сейчас уже и не помню, как решил задачу.
подскажите пожалуйста, в какой именно файл стиля прописывать
li.categories { ... } /* общий селектор */
li.cat-item { ... }
li.cat-item-7 { ... } /* Рубрика с ID #7 */
li.current-cat { ... }
li.current-cat-parent { ... }
ul.children { ... }
пытался в стайл в корневой папке шаблона, так не вышло..помогите плиз
В самый последний.
Здравствуйте Сегодня обновил вордпрес до последней версии В списки рубрик появились рубрики которые были исключены exclude=1,2,3,4 подскажите как быть Что нужно править чтобы исключенные рубрики не выводились в меню?
Здравствуйте!
Пришлите пожалуйста полный список параметров.
exclude=1,2,3,4 в этом списке не отображается только 1 рубрика Меняю местами exclude=3,1,2,4 не отображается 3 рубрика
Попробуйте в виде массива задать.
Подскажите, возможно ли при помощи этой функции вывести списком картинки и название категорий woocommerce?
А если нет, то какая функция дает такую возможность?
Спасибо
Возможно, если указать правильное значение параметра
taxonomy
.Да, все верно. Список категорий у меня вывести получилось. Вот мой код:
Здесь все ок. Но, мне нужно теперь к каждой категории добавить еще ее картинку. И тут у меня проблема - куда что нужно для этого добавить я понятия не имею :(
Может вы подскажите?
Добавляйте URL картинки в описание категории — самый простой вариант.
Миша, подскажите пожалуйста у меня название к-либо отдельной рубрики выводится в заголовке на определенной странице. Вывожу заголовок так:
Плюс в функциях у меня настройки на заголовок.. в общем получается так:
... статей на тему "Какая-то тема"
Мне нужно вместо точек ... поставить количество записей этой категории.
$show_count показывает ноль, не считает (см. ниже)
Вот функция вывода заголовка..
Спасибо!
Решение нашел сам, спасибо
Здравствуйте, а как вывести список рубрик в виде select?
Добрый вечер, вот так
Добрый день Миша.
Подскажите пожалуйста как настроить функцию wc_get_product_category_list() на сортировку по ID (по возрастанию)?
Всплыла маленькая неприятность, при выводе списка категории на странице товара, а за это отвечает файл single-product/meta.php и код на 34 строке:
выводит список категорий товара не по вложенности, ну т.е, сначала родительская, а потом субкатегория, а по алфавиту (по возрастанию). Т.е если имя субкатегории по алфавиту начнется раньше, она выведется перед родительской !!! Причем в админке Товар - Все товары, в столбце Категории выводит так же.
Как исправить эту несправедливость? Нет я конечно могу полностью переписать meta.php, но просто интересно увидеть более деликатное решение.
Добрый день Сергей,
Я бы порекомендовал вам воспользоваться для сортировки фильтр-хуком
term_links-{Название таксономии}
Тогда вы сможете спокойно отсортировать вывод как вам захочется, если вы знакомы с массивами в PHP:
Благодарю, так и сделаю.
Здравствуйте, Михаил! Подскажите пожалуйста, вот у меня есть таксономия "vehicles" и в ней лежат объекты которые разделяются 3х уровневой иерархией.
То есть:
Родитель > ребёнок > правнук
И этих 3х уровневых иерархий у меня очень много, а объектов у меня вообще 377. Не уверен что объясняю понятно поэтому вот скриншот для наглядности - https://prnt.sc/s0ybte
У меня стоит задача вывести на странице товара каждый уровень иерархии вывести отдельно.
То есть:
"Родитель" - отдельно,
"Ребёнок" - отдельно,
"Правнук" - отдельно.
Как мне это сделать? Вручную вбивать ID не очень бы хотелось, напомню что объектов 377. Что посоветуете?
Да я могу использовать -
'depth' => 1
, что бы вывести отдельно "родителя", а как быть с "ребёнком" и "правнуком"?Добрый день Андрей,
правнук же вроде должен быть 4-м уровнем, а не 3-м? 🤔
Можете использовать три массива, цикл в цикле и условие на основе
$term->parent
.Как убрать циклическую ссылку при выводе?
Циклическую ссылку?
А можно ли как-то проверить если это уже страница другой категории? Мне нужно сделать такой фильтр, чтобы на странице другой категории отображались категории дополнительные которые в паре с этой выбраны.