Сегодня поговорим о том, как вывести описание рубрики / категории, таксономии wordpress. Хочу предложит вам 2 варианта решения проблемы вывода описания рубрик вордпресс. Для того чтоб выбрать интересующий вас вариант воспользуйтесь навигацией по странице:

В конце каждого из вариантов есть код для вывода описания для таксономий, он немного отличается от рубрик.

Вывод классического описания рубрик wordpress

Достаточно просто активировать вот этот плагин и у вас появится вот такой редактор Tiny для рубрики:

Теперь как решить проблему с описанием в мета теге description ? - для этого можно скачать плагин для СЕО оптимизации, например вот этот: . Более подробно о можно узнать перейдя по ссылке.

Теоретически на этом все, теперь у ваших рубрик / категорий должно отображаться описание на странице.

Вывести класическое описание таксономии wordpress

Проблема с мета description в этом случаи стает ребром и приходится или отключать мета для таксономий или мериться с тем что мета поле и описание теперь общие.

Как вы поняли не самая лучшая ситуация. Я специально решил описать классический вариант первым, чтоб показать насколько все сложно и геморойно. Лично я, уже не вывожу описание рубрики wordpress в такой способ больше года. Рекомендую прочесть второй способ.

Создаем и выводим описание для рубрики wordpress на плагине ACF

Более подробно о том, что такое описано по этой ссылке.

Пошаговая инструкция для отображения произвольного поля описание в рубрике на ACF:

1) Устанавливаем плагин ACF и активируем его.

2) Переходим во вкладку "Произвольные поля"

3) Создаем новый тип полей

4) Вводим название для группы полей и нажимаем "+ добавить поле"

5) В появившемся окне вводим имя поля, имя в ВП (обязательно латиницей без пробелов) и указываем тип поля "Редактор WYSIWYG" (он же ваш TinyMCE). Все как на рисунке:

6) Прокручиваем настройки ниже и в блоке "Местоположение" указываем значения как на следующем рисунке:

7) Поднимаемся в самый верх и нажимаем кнопку "Опубликовать / обновить"

8) Переходим во вкладку "Рубрики"

10) И что мы видем? - у нашей рубрики появилось новое поле (если не появилось стоить нажать ctrl+F5)

11) Записываем в это поле нужный текст.

12) Открываем файл темы от куда выводится наша категория (как узнать где этот файл я описывал в первом примере) и забрасываем вот туда такой простенький код:

13) Нажимаем на кнопку просмотреть и наслаждаемся работой и отображением описания категорий.

Вот так вот легко и просто мы сделали описание рубрики wordpress.

На этом можно закончить, но я обещал что покажу как вывести описание для таксономий wordpress на произвольном поле с редактором TiniMCE.

Смотрим пример выше и делаем все как я в нем описал, только в пункте 6 вам нужно указать вместо слова "Рубрики" имя вашей таксономии. У меня таксономия называется "tmp" по этому получается вот такая картинка в замен той что у п. 6:

И мы можем записать туда текст описание рубрики.

Теперь осталась маленькая правка шаблона, аналог того что мы делали в п. 12. Определяем где выводится наша таксономия, описывал выше в классическом варианте как это делается и закидываем туда вот такой код:

На этом все, ваше описание для таксономий должно отображаться на сайте.

В качестве благодарности можно нажать лайк и распространить этот пост среди своих друзей:

P.S.: Основная цель этого поста показать как можно вывести описание рубрики wordpress стандартным способом и с помощью плагина ACF. Как по мне второй вариант проще и более предпочтительный. Если у вас не получается вывести описание категорий или таксономий wordpress пишите свои вопросы в комментариях, я с радостью на них отвечу.

Добрый день, уважаемые друзья!

Сегодня мы немного поговорим об оформлении страниц рубрик на вашем сайте под управлением WordPress.

Я уверен, что вы что-то примите во внимание из этого материала и непременно сделаете свой сайт лучше.

Принцип оформления страниц рубрик и достоинства

Под оформлением страниц рубрик (категорий) я не имею ввиду красочный фон с изящным шрифтом. Я подразумеваю создание качественной концепции данного типа страниц, то есть понятную структуру для посетителя и поисковых систем.

Если вы перейдете в любую рубрику моего сайта, то сразу поймете, о чем я говорю.

Я предлагаю сделать вывод названия рубрики совместно со статическим текстовым описанием. Можно этого и не делать, но плюсы явно есть, так как мы сайт делаем в первую очередь для посетителей. А именно описание и название помогает посетителю понять, что за контент находится в каждой из категорий и помогает принять решения, изучать ли материалы рубрики или нет.

К тому же, мало кто использует такой вариант оформления, если посмотрите другие сайты на WordPress. Это также некоторое достоинство, так как что-то нестандартное позволяет выйти вперед семимильными шагами.

Итак, предлагаю сделать некий чек-лист достоинств подобного оформления.

Теперь предлагаю рассмотреть каждый элемент оформления страниц рубрик в отдельности, чтобы на выходе вы могли получить примерно такой же вариант, как и у меня.

Вывод названия рубрики WordPress

На самом деле, в большинстве стандартных официальных шаблонов данная функция предусмотрена по умолчанию. У меня же название не выводилось и мне это не очень понравилось. Тем более, что абсолютно каждая страница должна иметь свой заголовок первого уровня в теге H1. А что мы можем разместить в данном теге кроме названия самой рубрики? По факту, ничего толкового.

Странно будет, если поисковик зайдет на данный тип страниц и не увидит ее заголовка. Поэтому, если у вас все еще его нет - обязательно добавляйте.

Чтобы вывести название рубрики на WordPress сайта достаточно в файл, отвечающий за вывод категорий и архивов (category.php - категории и archive.php - архивы), вставить следующий код в нужное место.

"Вы находитесь в рубрике: " ) ; ?>

Если нет файла category.php, то вполне возможно, что рубрики и архивы выводятся одним файлом archive.php. У меня именно так.

Данный код выведет лишь название, а нам же нужно, что оно было заключено в тег H1. Тогда стоит обернуть его данным тегом. В итоге выйдет следующий вариант.

< h1 class = "archive-title" > "Вы находитесь в рубрике: " ) ; ?> < / h1 >

Теперь все нормально. Данный код нужно будет разместить в файл (какой, см. выше) в место, примерно перед конструкцией.

Данная функция отвечает, что начался цикл вывода анонсов. Именно перед ними мне и нужно было вывести информацию о рубриках.


Если же нужно вывести после списка анонсов, что вполне логично, то нужно разместить данный код после завершения цикла вывода анонсов. За это отвечает функция:

Находится она немного ниже в коде. А может и намного ниже. Все зависит от функциональности шаблона. Но, в любом случае, ищите ее ниже и размещайте именно под ней (функцией). Например, вот так:


Если посмотрим на итоговый код вывода названия, то внутри тега H1 имеется класс оформления (class="archive-title"), с помощью которого я задал размер шрифта, цвет, выравнивание и так далее. Если вам не нужно оформление, то можете просто проигнорировать данный класс или же вообще убрать его из тега. Я бы убрал, чтобы сделать код меньше и чище.

Если что, то вот мои стили названия рубрик.

Archive-title { color: #34495e; font-family: arial; font-size: 24px; line-height: 130%; text-align: center; margin: 10px 0px; }

Archive-title {

color : #34495e ;

font-family : arial ;

font-size : 24px ;

line-height : 130% ;

text-align : center ;

margin : 10px 0px ;

Итак, первую часть мы сделали. Теперь перейдем к выводу описания.

Вывод описания рубрики на WordPress

Перед выводом, необходимо сначала его заполнить. Делается все стандартными средствами движка. Переходим в редактор любой рубрики и в поле "Описание" вводим нужный текст. Можете использовать html теги для его оформления.

Чтобы с тегами было удобно работать, существует плагин Rich Text Tags, который рассмотрим в следующем пункте.

Сохраняете изменения. Если ваша тема поддерживает вывод описания на странице рубрик, то оно уже будет отображаться в должном виде без нужды его оформления, так как в шаблоне оно также предусмотрено.

Если же такового нет, то придется самим вывести описание рубрик. Обращаемся все к тем же файлам вывода категорий и архивов и ниже кода вывода названия вставляем следующую функцию.

Все. Описание будет отображаться. В принципе, все дело сделано. Но возможен еще один момент, который вам придется сделать.

У меня, например, в шаблоне простой код описание то вывел, но из-за его вывода сместился сайдбар (боковая колонка), так как описание растянулось на всю ширину сайта. Для этого мне пришлось заключить название и описание в отдельный блок и придать ему нужное оформление (ширину, фон и левую бардюру серого цвета).

На практике это выглядит следующим образом.

< div class = "category-desc" >

< h1 class = "archive-title" > "Вы находитесь в рубрике: " ) ; ?> < / h1 >

< / div >

Как видим, имеется блок с классом "category-desc", которому назначены соответствующие стили для ширины блока, чтобы боковая колонка не смещалась. Также добавил белый фон, так как простой код выводил описание на общем фоне сайта, а нужно было его вписать в общую ауру оформления.

Вот стили общего блока.

Category-desc { background: #f1f4f5; border-left: #BDC3C7 4px solid; width: 675px; font-weight: 600; padding-bottom: 10px; margin-top: 0px; margin-bottom: 10px; padding-top: 10px; padding-right: 20px; padding-left: 20px; background: #ffffff; }

Category-desc {

background : #f1f4f5 ;

border-left : #BDC3C7 4px solid ;

width : 675px ;

font-weight : 600 ;

#ffffff ;

Возможно, что вам данные стили не потребуются. Все зависит от того, в какое место вы разместите вывод названия и описания рубрик и от структуры шаблона.

Как вы уже поняли, я разместил в самом верху страницы перед всем список материалов (анонсов) рубрик. В принципе это нормально. Посетитель заходит и сразу видит концепцию сайта, которая помогает ему определиться с его структурой и принципом подачи контента.

Но имеется обратная сторона. Когда посетитель заходит в категорию, первым делом он жаждет получить именно материалы по теме рубрики. А в итоге он получает статический текст о самой рубрике. Это может помешать пользователю углубиться в другие материалы, так как он сразу не получит к ним доступ. С этой стороны - ошибка.

Поэтому, имеется вариант размещать информацию о рубрике именно в низу страницы после списка анонсов, чтобы пользователь сразу получил ожидаемый список контента и смог углубиться, открыв большое количество записей. Последнее стоит в приоритете, так как улучшается поведенческий фактор "Глубина просмотров в рамках одной сессии".

Но опять же, тут все зависит от конкретного пользователя и самого сайта. У себя я не увидел помех для доступа к списку анонсов при размещении статического текста в верхушке страницы. Все работает отлично.

В любом случае, действовать наугад нельзя. Попробуйте оба варианта и проанализируйте поведение пользователей на данном типе страниц в каждом из вариантов размещения статической информации. Что сработает лучше, то и оставляйте.

Теперь пару советов:

  1. Если разместите сверху, то текст слишком большим не делайте, чтобы основной контент (список материалов) не отдалять от посетителя. Вполне хватит 400-500 символов с описанием общей концепции рубрик;
  2. В описании можете разместить красивую картинку небольшого размера, ибо простой текст не привлекает внимания;
  3. Можете сделать ссылки на самые горячие и важные для продвижения страницы, которые непременно в этом нуждаются и помогут посетителю решить проблему или узнать что-то новое;
  4. Не стоит в тексте размещать большое количество ключевых слов, пытаясь продвинуть рубрику. Описание должно давать понятие посетителю о категории. Упор именно на посетителя. Но, если решим поднять шансы на получения трафика из ПС, то можно вписать ключевое слово в читабельной форме не в ущерб самому описанию. Также в этом случае необходимо заполнить все мета-теги для рубрик (title, desription и keywords), а это позволяют не все . Более подробно о последнем моменте читайте по предыдущей ссылке.

Тут все. Теперь о последнем моменте, который позволит вам оформить текст в описании очень просто.

Расширенное оформление с помощью Rich Text Tags

Данный плагин добавляет к стандартному полю описания рубрик панель форматирования, где мы можем оформлять текст точно также, как и в редакторе записей. Это очень удобно, учитывая то, что можно оформить текст достаточно быстро и и просто, а затем деактивировать плагин, так как стандартное поле описания категорий понимает все html теги и будет и отображать их на страницах в готовом виде для посетителя.

Таким образом, активировали плагин, красиво оформили и выключили, а описание отображается в оформленном виде. Без плагина же пришлось бы вписывать все теги в ручном режиме. Согласитесь, довольно неудобно.

Итак, скачать плагин Rich Text Tags можно с официальной страницы . После его установки и активации стандартное поле "Описание", заменится на другое решение, где будет полноценная панель форматирования.

Вы сможете работать, как в визуальном редакторе, так и текстовом (HTML режиме). После оформления отключаете плагин и снова станет доступно стандартное поле от движка. Вместо самого оформления в поле описания вы увидите набор html тегов. Но на самых страницах оформление будет отображаться должным образом.

Очень удобное решение, если вы хотите сделать не просто текст, а реально помочь посетителю, сделав для него мини-пояснение к данной рубрике в виде списков на самые лучшие материалы и так далее. Тут уже на ваше усмотрение.

На этом в общем-то и все. Надеюсь, что материал показался полезным для вас. Ничего в этом сверхъестественного нет, но достоинства такого оформления должны вам приглянуться, так как плюсы явно очевидны.

В заключение записал для вас видео по данному материалу. Надеюсь, что оно до конца раскроет тему статьи. Приятного просмотра.

Если остались какие-то вопросы, то комментарии ниже. Также не забывайте делиться материалом со своими друзьями и жмите на звездочки ниже. До связи.

С уважением, Константин Хмелев!

Рубрики WordPress это элемент таксономии сайта, улучшающие его организацию материалов и навигацию по сайту. Создаются рубрики WordPress администратором сайта. По структуре они могут иметь древовидное построение с произвольной глубиной вложенности дочерних рубрик.

Смысл создания рубрик сайта и присоединения каждой статьи к отдельной рубрике в улучшении навигации сайта для пользователей и повышение релевантности (предпочтения) сайта в поисковой выдаче, у поисковых роботов. Есть мнение, что поисковики «любят» строго организованные документы с иерархической структурой подчинения, так как это позволяет им проще обходить сайты при сканировании.

Важно! В системе WordPress, в отличие от других систем, стало возможным одну статью прикрепить к нескольким рубрикам. Такой приём увеличивает , хотя система назначает основную и вторичную рубрики статьи.

Управление рубриками WordPress

Форма добавления рубрики довольно простая. Стоит обратить внимание на «Ярлык» для рубрики. Ярлык рубрики будет отражаться в URL статей и рубрик. Если вы не заполните ярлык, система сформирует его самостоятельно. Если вы используете плагины транслитерации, ярлык будет переведен автоматом. Можно вписать ярлык рубрики самостоятельно. Ярлык, на сайте, как и название, раздела, должен быть уникальным. При использовании одинаковых ярлыков, система автоматом добавит к ним цифру через дефис.

Описание раздела, не обязательно, но для оптимизации, желателен. Описание должно быть небольшим, знаков 160-165 и уникальным в пределах сайта и Интернет. Некоторые темы показывают описание рубрик на сайте при открытии архива рубрик. Как красиво оформить страницу рубрик читать в статье .

Возвращает

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" => 1, "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" => "
",); echo "
    "; wp_list_categories($args); echo "
";

Аргументы передаваемые параметру $args

child_of(число) Показать дочерние категории. В параметре указывается ID родительской категории (категория, вложенные категории которой нужно показать). current_category(строка/массив)

В нормальном режиме такой класс добавляется к текущей категории на странице категорий. Этот параметр нужен, чтобы, например, добавить этот класс на отдельных страницах, которые не относятся к текущей категории.

С версии 4.4. в этот параметр можно передавать массив ID.
По умолчанию: ""

Depth(число)

Этот параметр контролирует глубину вложенности категорий, которые будут показаны. По умолчанию 0 - показывать все уровни вложенности (все дочерние категорий). С версии 2.5.

  • 0 - все уровни вложенности (По умолчанию);
  • -1 - показать все дочерние категории, но без вложенности li списков. Отменяет параметр hierarchical ;
  • 1 - показать только категории первого уровня (все виды вложенных категорий не будут показываться);
  • n - число - глубина вложенности которую нужно показывать. 2 - покажет категорий первого и второго уровня.
echo(логический)

Выводить на экран или возвращать для обработки.

  • 1 (true) - да, выводить на экран;
  • 0 (false) - нет, просто возвратить данные.

По умолчанию: true

Exclude(строка)

  • Если этот параметр указан, параметр child_of будет отменен.
  • Если параметр heiararchical=true , то будет исключаться вся ветка. Если heiararchical=false , то для исключения ветки используйте параметр exclude_tree .

По умолчанию: ""

Exclude_tree(строка) Исключить дерево категорий из списка. Указывайте ID категорий через запятую. Параметр include должен быть пустым. Если параметр heirarchical=true , то используйте exclude вместо exclude_tree .
По умолчанию: "" include(строка) Вывести списком только указанные категории. Указывать нужно 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.
По умолчанию: "
"
show_count(логический)

Показывать/нет количество записей в категории. Число записей будет показано после названия категории в скобках (например, Психология (16)).

  • 1 (true) - показывать количество записей;
  • 0 (false) - не показывать количество записей.
show_option_all(строка)

Текст для отображения всех категорий.

Если передать не пустую строку, например "Все категории" , то в список будет добавлена ссылка на все категории (часто это ссылка на главную страницу блога). Текстом ссылки станет текст переданный параметру, в данном случае Все категории.
По умолчанию: ""

Show_option_none(строка) Если функция не нашла ни одной категории для показа, то будет показан этот текст.
По умолчанию: "Нет рубрик" style(строка)

Стиль вывода списка.

  • list - означает, что нужно выводить списком в теге
  • , вложенность категорий будет соблюдена.
  • none - будут выведены только ссылки на категории () разделенные тегом
    .

По умолчанию: "list"

Taxonomy(строка) Название таксономии, которую нужно обрабатывать.
По умолчанию: "category" title_li(строка) Установить заголовок списка. Если изменить этот параметр на "" (title_li=), то заголовок не будет выводиться вовсе.
По умолчанию: "Категории" use_desc_for_title(логический)

Вставлять ли описание категории в атрибут title у ссылки (

По умолчанию: true

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), можно использовать следующий код:

#2 Сортировка по названию

Следующий пример сортирует категории по названию (orderby=name), показывает количество записей в каждой категории (show_count=1) и исключает из списка категорию с ID 10 (exclude=10):

#3 Уберем заголовок списка категорий

С помощью обнуления параметра title_li . По умолчанию этот параметр равен __("Categories") , если установить его в null или "" , заголовок списка не будет показан вообще. Следующий пример исключает категории 4 и 7, и убирает заголовок списка категорий:

#4 Выводим только указанные рубрики

Этот пример покажет список только из категорий с ID 9, 5 и 23, и изменит заголовок списка на Поэзия, который будет заключен в теги

:

    " . __("Poetry") . "

"); ?>

#5 Выведем только дочерние категории

Для того, чтобы вывести только категории вложенные в категорию 8 (child_of=8) и отсортировать их по ID (orderby=id), так же показать количество записей в каждой категории (show_count=1) и убрать из атрибута title описание категорий (use_desc_for_title=0) используйте следующий вызов функции wp_list_categories:

#6 Удалим скобки, в которые обрамляется количество записей в каждой категории

Для этого получим список категорий в переменную (echo=0) и пропустим её через php функцию str_replace() , которая удалит скобки:

Категории"); $cats = str_replace(["(",")"], "", $cats); echo $cats; ?>

#7 Покажем список категорий со ссылкой на RSS-ленту

Для этого используем параметр feed=RSS , так же в этом примере список будет отсортирован по названию категорий (orderby=name) и у каждой категории будет показано количество записей (show_count=1):

#7.1 Если нужно показать ссылку-картинку вместо текста ссылки RSS фида, то используем параметр feed_image:

#8 Выводим список произвольной (пользовательской) таксономии

С версии 3.0 стало возможно выводить списки произвольных таксономий через параметр taxonomy . Так же в этом примере показывается как передавать параметры не строкой, а массивом:

"genre", // название таксономии "orderby" => "name", // сортируем по названиям "show_count" => 0, // не показываем количество записей "pad_counts" => 0, // не показываем количество записей у родителей "hierarchical" => 1, // древовидное представление "title_li" => "" // список без заголовка); ?>

#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 { ... }

Заметки

Добавленные параметры в разных версиях:

  • 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. The current_category argument was modified to optionally accept an array of values.

Код wp list categories : wp-includes/category-template.php WP 5.2.2

0, "current_category" => 0, "depth" => 0, "echo" => 1, "exclude" => "", "exclude_tree" => "", "feed" => "", "feed_image" => "", "feed_type" => "", "hide_empty" => 1, "hide_title_if_empty" => false, "hierarchical" => true, "order" => "ASC", "orderby" => "name", "separator" => "
", "show_count" => 0, "show_option_all" => "", "show_option_none" => __("No categories"), "style" => "list", "taxonomy" => "category", "title_li" => __("Categories"), "use_desc_for_title" => 1,); $r = wp_parse_args($args, $defaults); if (! isset($r["pad_counts"]) && $r["show_count"] && $r["hierarchical"]) { $r["pad_counts"] = true; } // Descendants of exclusions should be excluded too. if (true == $r["hierarchical"]) { $exclude_tree = array(); if ($r["exclude_tree"]) { $exclude_tree = array_merge($exclude_tree, wp_parse_id_list($r["exclude_tree"])); } if ($r["exclude"]) { $exclude_tree = array_merge($exclude_tree, wp_parse_id_list($r["exclude"])); } $r["exclude_tree"] = $exclude_tree; $r["exclude"] = ""; } if (! isset($r["class"])) { $r["class"] = ("category" == $r["taxonomy"]) ? "categories" : $r["taxonomy"]; } if (! taxonomy_exists($r["taxonomy"])) { return false; } $show_option_all = $r["show_option_all"]; $show_option_none = $r["show_option_none"]; $categories = get_categories($r); $output = ""; if ($r["title_li"] && "list" == $r["style"] && (! empty($categories) || ! $r["hide_title_if_empty"])) { $output = "
  • " . $r["title_li"] . "
      "; } if (empty($categories)) { if (! empty($show_option_none)) { if ("list" == $r["style"]) { $output .= "
    • " . $show_option_none . "
    • "; } else { $output .= $show_option_none; } } } else { if (! empty($show_option_all)) { $posts_page = ""; // For taxonomies that belong only to custom post types, point to a valid archive. $taxonomy_object = get_taxonomy($r["taxonomy"]); if (! in_array("post", $taxonomy_object->object_type) && ! in_array("page", $taxonomy_object->object_type)) { foreach ($taxonomy_object->object_type as $object_type) { $_object_type = get_post_type_object($object_type); // Grab the first one. if (! empty($_object_type->has_archive)) { $posts_page = get_post_type_archive_link($object_type); break; } } } // Fallback for the "All" link is the posts page. if (! $posts_page) { if ("page" == get_option("show_on_front") && get_option("page_for_posts")) { $posts_page = get_permalink(get_option("page_for_posts")); } else { $posts_page = home_url("/"); } } $posts_page = esc_url($posts_page); if ("list" == $r["style"]) { $output .= "
    • $show_option_all
    • "; } else { $output .= "$show_option_all"; } } if (empty($r["current_category"]) && (is_category() || is_tax() || is_tag())) { $current_term_object = get_queried_object(); if ($current_term_object && $r["taxonomy"] === $current_term_object->taxonomy) { $r["current_category"] = get_queried_object_id(); } } if ($r["hierarchical"]) { $depth = $r["depth"]; } else { $depth = -1; // Flat. } $output .= walk_category_tree($categories, $depth, $r); } if ($r["title_li"] && "list" == $r["style"] && (! empty($categories) || ! $r["hide_title_if_empty"])) { $output .= "
  • "; } /** * Filters the HTML output of a taxonomy list. * * @since 2.1.0 * * @param string $output HTML output. * @param array $args An array of taxonomy-listing arguments. */ $html = apply_filters("wp_list_categories", $output, $args); if ($r["echo"]) { echo $html; } else { return $html; } }