wp_list_categories() — вывод категорий в виде списка, WordPress
2.1.0
wp-includes / category-template.php
Эта функция довольно часто используется в темах WordPress для создания меню. А так же с её помощью очень удобно выводить виджет со списком категорий в сайдбаре. Когда я говорю список, я имею ввиду HTML-список.
Если же вам нужно вывести рубрики к текущей записи или к записи с указанным ID — воспользуйтесь функцией the_category() или get_the_category().
А теперь рассмотрим простейший пример:
wp_list_categories('orderby=name');
Этот код выведет список категорий, отсортированных по имени. Вот как это будет выглядеть в HTML, самый обычный список со ссылками:
<li>Рубрики <ul> <li> <a href="http://ваш_сайт.com/category/plugins" title="Просмотреть все записи в рубрике «Плагины»">Плагины</a> </li> <li> <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
(строка) Каким образом вы хотите отсортировать категории?
- ID — по id категории (по умолчанию)
- name — по имени
- slug — по ярлыку
- count — по числу записей
order
(строка) Устанавливает порядок сортировки.
- asc — по возрастанию (по умолчанию)
- desc — по убыванию
style
(строка) Стиль вывода списка категорий.
- list — в виде <li>-списка (по умолчанию)
- none — в виде ссылок, разделенных тегом
show_count
(логическое) Указывает в скобках количество постов в каждой из рубрик.
- 1 — да
- 0 — нет (по умолчанию)
hide_empty
(логическое) Нужно ли исключить пустые рубрики (категории) из списка?
- 1 — да (по умолчанию)
- 0 — нет
use_desc_for_title
(логическое) Нужно ли использовать описание рубрик в атрибуте title для ссылок, если оно имеется. (пример: <a title=»Описание_категории» href=»…)
- 1 — да (по умолчанию)
- 0 — нет
child_of
(целое число) Нужно указать id рубрики, подрубрики которой вы хотите вывести.
feed
(строка) Рядом с каждой категорией вставляет ссылку на RSS-ленту. Указанное значение будет анкором этих ссылок.
feed_image
(строка) Аналогичен предыдущему параметру, но только вставляет ссылку с картинкой. В качестве значения укажите адрес картинки.
feed_type
(строка) Тип RSS-ленты.
- atom
- rdf
- rss
- rss2 (по умолчанию)
exclude
(целое число) Перечислите через запятую id категорий, которые вы хотите исключить из списка.
exclude_tree
(целое число) Исключить рубрику и все её подрубрики из списка. Работает только при выключенном hierarchical.
include
(целое число) Укажите через запятую категории (их id), которые вы хотите включить в список.
hierarchical
(логическое) Нужно ли создавать вложенные списки для подкатегорий?
- 1 — да (по умолчанию)
- 0 — нет
title_li
(строка) Заголовок для списка категорий. По умолчанию __( ‘Categories’ ). То есть в русском WordPress это будет переведено в «Рубрики». Оставьте параметр пустым, чтобы избавиться от заголовка.
number
(целое число) Сколько категорий нужно отобразить в списке?
echo
(логическое) Вывод списка категорий или сохранение результата в переменную.
- 1 — да (по умолчанию)
- 0 — нет
depth
(целое число) Количество уровней вложенности списка.
- 0 — неограниченно (по умолчанию)
- -1 — без уровней вложенности, параметр hierarchical игнорируется
- n — любое целое число
taxonomy
(строка) Выберите таксономию для вывода:
- category — рубрики (по умолчанию)
- 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>Мои рубрики <ul> <li> <a href="http://ваш_сайт.com">Перейти на главную</a> </li> <li> <a href="http://ваш_сайт.com/category/ярлык_рубрики" title="описание_рубрики">название_рубрики</a> (<a href="http://ваш_сайт.com/category/ярлык_рубрики/feed" title="RSS">RSS</a>) (0) </li> <li> <a href="http://ваш_сайт.com/category/ярлык_рубрики" title="описание_рубрики">название_рубрики</a> (<a href="http://ваш_сайт.com/category/ярлык_рубрики/feed" title="RSS">RSS</a>) (1) <ul> <li><a href="http://ваш_сайт.com/category/ярлык_рубрики/ярлык_рубрики" title="описание_рубрики">название_рубрики</a> (<a href="http://ваш_сайт.com/category/ярлык_рубрики/ярлык_рубрики/feed" title="RSS">RSS</a>) (0) </li> </ul> </li> </ul> </li>
Миша
В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.
Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.
Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.
функция для вывода категорий к посту в WordPress
0.71
wp-includes / category-template.php
Функция возвращает массив объектов (в данном случае рубрики, в которых находится пост с указанным в параметрах ID).
Короче говоря в итоге вы получаете все рубрики поста и информацию о них.
Использование
Параметры
$id
(целое) ID поста, если функция используется в цикле, этот параметр необязателен.
Возвращаемые значения
Как я уже говорил, функция возвращает массив объектов, каждый из них содержит информацию об одной из рубрик, в которой находится пост.
В скобках указаны эквивалентные варианты.
- term_ID (cat_ID) — ID рубрики,
- name (cat_name) — название рубрики,
- slug (category_nicename) — ярлык категории,
- description (category_description) — описание категории,
- parent (category_parent) — ID родительской категории,
- count (category_count) — количество записей (постов) в рубрике,
- term_group — значение колонки term_group в базе данных,
- term_taxonomy_id — ID таксономии, у рубрик он равен 1,
- taxonomy — название таксономии, для рубрик — category,
- object_id — ID объекта;
Примеры
Выводим список рубрик со ссылками
Переменной $post_id задайте своё значение, либо просто удалите её оттуда, если используете этот код внутри цикла.
Для получения URL рубрики используем функцию get_category_link().
$categories = get_the_category($post_id); if($categories){ echo '<ul>'; foreach($categories as $category) { echo '<li><a href="'. get_category_link($category->term_id) . '">' . $category->cat_name . '</a></li>'; } echo '</ul>'; }
Выводим список рубрик к текущему посту через запятую
Функция trim() нужна для удаления каких-либо символов по краям строки, в данном случае запятую с пробелом.
$categories = get_the_category(); if($categories){ foreach($categories as $category) { $out .= '<a href="'.get_category_link($category->term_id ).'">' . $category->name . '</a>, '; } echo trim($out, ', '); }
Указываем ссылку только на первую рубрику, в которой находится пост
К каждому объекту массива $categories можно обратиться по порядковому номеру, нумерация начинается с нуля.
$categories = get_the_category(); if($categories[0]){ echo '<a href="' . get_category_link($categories[0]->term_id ) . '">'. $categories[0]->name . '</a>'; }
Миша
В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.
Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.
Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.
Как вывести подподкатегорию у подкатегории
Модератор SeVlad(@sevlad)
wp.me/3YHjQ
ставил опыты на category.php
Причём тут шаблон рубрики, если на скринах у Вас меню? (только таким наименованием пунктов, да ещё и дублирующимся, понять правильно может быть проблематично)
В чём Вы видите неадекватность? Чего Вы хотите добиться?
хочу что-бы при нажатии на подменю (Например 2) у меня был выбор подкатегорий (В данном случае 3)
А выходит так, что я перехожу в подменю 2 и вижу контент этого подменю, а не категорию 3
Модератор SeVlad(@sevlad)
wp.me/3YHjQ
хочу что-бы при нажатии на подменю (Например 2) у меня был выбор подкатегорий (В данном случае 3)
У Вас на скрине в подменю 2 нет рубрики 3. Создайте нужную структур меню и всё получиться.
ещё раз всё настроил. Теперь получается как, в горизонтальном меню есть меню «1» при нажатии на него, я вижу все записи в структуре. WordPress всёравно что я там выстраивал иерархию, он показывает все записи, просто по порядку. Как мне сделать так, что-бы при нажатии на рубрику, я видел эту рубрику, а не записи во всех рубриках ниже?
Как мне сделать так, что-бы при нажатии на рубрику, я видел эту рубрику, а не записи во всех рубриках ниже?
А что вы вкладываете в словосочетание «видел эту рубрику»? На архивной странице основной (верхней) рубрики Вордпресс всегда отображает записи всех вложенных рубрик. Для изменения поведения нужно довольно сильно менять цикл вывода записей в зависимости от «типа» рубрики — дочерняя или родительская.
Я хочу нажать на рубрику «Еда» увидеть в ней категорию «Бутерброд» и нажав на «Бутерброд» получить список записей этой рубрики
может быть есть модуль, который облегчит мои муки?
В данный момент я вижу это как
-Еда
— — Бутерброд
— — Колбаса
— — Хлеб
— — Блины
— — Мука
— — Сахар
Хочу
-Еда
— — Бутерброд
— — — Колбаса
— — — Хлеб
— — Блины
— — — Мука
— — — Сахар
- Ответ изменён 2 года, 9 месяцев назад пользователем free2app.
- Ответ изменён 2 года, 9 месяцев назад пользователем free2app.
Я хочу нажать на рубрику «Еда» увидеть в ней категорию «Бутерброд» и нажав на «Бутерброд» получить список записей этой рубрики.
О, тогда вам ещё нужно менять / создавать отображение некоторых архивных странниц. Готового решения нет, если не считать различные Page Builder, но они обычно работают с типом записей «page», максимум «single»… а чтобы они с рубриками работали… таких не знаю. В общем, ручная настройка и допиливание в любом случае нужны.
Может инструкции существуют?
Вам нужно делать иерархию категорий и изменять цикл, чтобы записи не выводились в родительских категориях, а только в последней дочерней(например Хлеб). А при чем тут меню вообще не понятно.
Плюс добавлять код в шаблон категорий для вывода ссылок на подрубрики текущей рубрики.
- Ответ изменён 2 года, 9 месяцев назад пользователем qwert555.
- Ответ изменён 2 года, 9 месяцев назад пользователем qwert555.
- Ответ изменён 2 года, 9 месяцев назад пользователем qwert555.
Может и существуют, если где-то какой-то человек захотел сделать такую же структуру как у вас, придумал её, реализовал, а потом от чистого сердца написал подробную инструкцию и выложил в интернете. Не знаю.
вот похожая тема https://ru.wordpress.org/support/topic/каталог-на-базе-рубрик/
ух, уже изучал эту тему, надеялся есть другие варианты… начал копать тему.
Как вывести подподкатегорию у подкатегории — page 2
подскажите, то что у меня в шаблоне нет файла category.php это нормально?
Модератор SeVlad(@sevlad)
wp.me/3YHjQ
Хочу
-Еда
— — Бутерброд
— — — Колбаса
— — — Хлеб
— — Блины
— — — Мука
— — — Сахар
Ну так сделайте такое меню — в чём проблема-то?
подскажите, то что у меня в шаблоне нет файла category.php это нормально?
Нормально, но это шаблон рубрики и не имеет никого отношения к меню. АБСОЛЮТНО никакого.
Но у меня при открывании еды, отображается всё в случайном порядке, и мука, и колбаса и бутерброд. Я же хочу систематизациии, Еда — Бутерброд/Блины. Нажал на одно из, и получил ингредиенты
А, я понял. Вы говорите о выпадающем меню, с ним то всё хорошо. Я говорю о отрытых категориях, и их внутренностях
Модератор SeVlad(@sevlad)
wp.me/3YHjQ
Я говорю о отрытых категориях, и их внутренностях
Тогда причём тут меню?
И что не так с «внутренностями»? Ваша структура «хочу» — это вывод записей (или чего?) на странице рубрики «Еда»?
Можете показать живой пример где Вы видели такое?
http://medmagister.by/meditsinskie-izdelija/
Зайдите в стомийное оснащение.
Стомийное оснащение (категория) — внутри неё есть другие категории. При переходе в эти категории появляется товар (Запись)
подскажите, то что у меня в шаблоне нет файла category.php это нормально?
Вполне. Это просто означает, что автор темы не создал такой файл, а значит все архивные страницы, включая рубрики, выводятся с помощью файла archive.php
Если и этого файла нет (но это вряд ли), значит смотрите index.php
Модератор SeVlad(@sevlad)
wp.me/3YHjQ
Зайдите в стомийное оснащение.
Стомийное оснащение (категория) — внутри неё есть другие категории. При переходе в эти категории появляется товар (Запись)
Хотя это и не ВП, но по аналогии с ВП — тут в шаблон рубрики добавлен вывод списка подрубрик.
Т.е. да в шаблон рубрик добавить вывод подрубрик.
get_categories (по-русски) напр.
Ага… пошёл изучать, надеюсь поможет.