WordPress вывести подкатегории: Вывод подкатегорий из основной категории – Вывод подкатегорий | WordPress.org Русский

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="Просмотреть все записи в рубрике &laquo;Плагины&raquo;">Плагины</a> 
	</li> 
	<li>
		<a href="http://ваш_сайт.com/category/themes" title="Просмотреть все записи в рубрике &laquo;Темы&raquo;">Темы</a> 
	</li> 
</ul>
</li>

Теперь добавим несколько параметров

wp_list_categories('orderby=name&style=none&title_li=');

Оставляем сортировку по имени, но теперь категории будут выводиться не через <li>-список, а просто в виде ссылок (каждая с новой строки), пустой параметр title_li означает, что не нужно добавлять заголовок. Вот, как это выглядит в HTML-коде:

<a href="http://ваш_сайт.com/category/plugins" title="Просмотреть все записи в рубрике &laquo;Плагины&raquo;">Плагины</a><br />
<a href="http://ваш_сайт.com/category/themes" title="Просмотреть все записи в рубрике &laquo;Темы&raquo;">Темы</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 (по-русски) напр.

Ага… пошёл изучать, надеюсь поможет.

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

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