Меню

Как выводить рубрики на страницах WordPress. Создаем крутые страницы рубрик в WordPress Вывод категорий на странице wordpress

Microsoft Office

В WordPress есть очень хорошая возможность группировать несколько записей в рубрики (категории), чтобы читателям было удобней просматривать все статьи определенной тематики, которые имеются на сайте. Тем не менее, на страницах этих рубрик нельзя разместить хоть какую-нибудь полезную информацию о содержащемся в них контенте. И это плохо не только с точки зрения юзабилити сайта, но и SEO оптимизации тоже.

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

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

При этом, параметры шорткода дают вам такие возможности, как:

  • Добавлять постраничную навигацию;
  • Указывать количество символов для анонса записей;
  • Использовать пользовательские CSS классы для оформления;
  • Показывать превью постов;
  • Задавать сортировку постов и многое другое.

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

Как это сделать

С этим плагином, вывод рубрики на любой странице WordPress не представляет никакой сложности. Вы просто создаете новую страницу, наполняете ее нужным контентом, а потом добавляете специальный шорткод . В нем вам нужно указать ID тех категорий, которые нужно отобразить. Выглядит это так:

Помимо идентификатора, можно также использовать название или ярлык, тогда шорткод будет выглядеть так:

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

Как добавить больше параметров

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

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

Как видите, можно задавать несколько значений для имени или идентификатора, просто написав их через оператор «+». А поставив «yes» к «thumbnail» и «excerpt», можно показать миниатюры записей и небольшие анонсы соответственно. В конце, строка «excerpt_size» указывает на то, какое количество символов должно быть у анонсов. В данном случае, анонсы будут состоять из 50 символов, но вы можете указать любое количество.

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

В качестве примера, на этот раз мы будем использовать идентификаторы. Затем, включим постраничную навигацию и введем ограничение в 6 постов на страницу с помощью «numberposts». В конце, зададим сортировку по заголовку в сторону убывания.

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

Стилизация

В параметрах шорткода, кроме различных способов отображения, можно также задать собственную стилизацию. Вообще, по умолчанию, содержание категорий расположено в списке с тегом «ul», классом «lcp_catlist» и уникальным ID. Этого может быть достаточно, чтобы просто задать нужные стили в CSS файле вашей темы WordPress. Но, если вы хотите получить больше возможностей для настройки, то вы можете использовать параметры соответствующие параметры, чтобы добавить собственные HTML теги.

Например, вы можете обернуть заголовки записей в тег «h4» и добавить им любой класс:

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

autor_tag, author_class, customfield_tag, customfield_class, catlink_tag, catlink_class, comments_tag,
comments_class, date_tag, date_class, date_modified_tag, date_modified_class, excerpt_tag, excerpt_class, morelink_class, posts_morelink_class, thumbnail_class, title_tag, title_class

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

Категории в виджете

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

Найдите там виджет «List Category Posts» и перетащите его на нужную панель. После этого, вы увидите список опций, позволяющих настроить его вывод. Этот список содержит много параметров, которые так же используются в шорткоде, хотя и не все. В любом случае, их вполне достаточно, чтобы максимально персонализировать виджет.

Заключение

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

- 3.3 out of 5 based on 3 votes

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

В WordPress предусмотрена возможность помещать тематические заметки в определенные рубрики.

Таким образом, можно сортировать все материалы блога в зависимости от тематики записи.

Это позволяет посетителям блога быстро находить материалы, касающиеся какой-то определенной темы, для их поиска не нужно рыться в архивах просматривая все материалы блога. Перед тем как приступить к наполнению своего блога на WordPress материалами, необходимо продумать и создать необходимые рубрики.

Для того чтобы создать рубрики перейдите в административной панели WordPress в пункт: «Записи» >> «Рубрики» .

В поле «Название» введите название вашей рубрики. Именно это название и будет отображаться на вашем блоге.

В поле «Ярлык» введите название рубрики латинскими символами. Это название будет отображаться в URL"е ведущем на данную рубрику. Можете здесь указать ключевое слово или словосочетание, релевантное данной рубрике, это учитывается поисковыми системами. Данное название отображается в URL только при включенных постоянных ссылках, как их включить вы можете прочитать в уроке . Более того, если вы настроили транслитерацию для постоянных ссылок, то ярлык будет создаваться автоматически.

В WordPrees предусмотрена иерархия рубрик. Поэтому при помощи выпадающего списка «Родительская» можно выбрать рубрику, в которую будет вложена та рубрика, которую мы создаем.

К примеру, если на блоге планируется публикация уроков по созданию сайта, то можно создать рубрику «Уроки», а в нее вложить рубрики: «Уроки HTML», «Уроки CSS», «Уроки WordPress», «Уроки Joomla». На панели, справа, это будет выглядеть так:

Т. е. при создании рубрик: «Уроки HTML», «Уроки CSS», «Уроки WordPress», «Уроки Joomla» из выпадающего списка «Родительская», был выбран пункт «Уроки». При создании заметки, вы сможете выбирать в какую категорию ее поместить.

В поле «Описание», можно ввести описание для данной рубрики. В большинстве шаблонов не предусмотрен вывод описания на блог поэтому, как правило, данное поле не заполняют.

После того как вы заполнили все необходимые поля, нажмите на кнопку «Добавить новую рубрику» , она будет создана и отобразится на панели с права.

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

Насколько важную роль играют страницы рубрик на вашем сайте? Или вы не задумывались над ними, пока не наткнулись на эту статью? Какие они – унылые и неинтересные? Только представьте себе – они могут быть более полезными (как для вас, так и для ваших посетителей)! Разве нельзя их сделать чуточку круче, как мачо с картинки ниже?

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

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

Подходим со всей серьезностью к страницам рубрик

Почему бы нам не проявить большую заботу о страницах рубрик? Почему бы не сделать их своеобразной интродукцией к рассматриваемому вопросу – т.е. теме вашей рубрики?

Вместо стандартного списка ссылок можно сделать что-то такое:

Или вот такое, чуть попроще:

Ведь это будет гораздо удобнее для ваших посетителей! Не думали ли вы над тем, что такие страницы рубрик отлично подходят для наращивания ссылок и снискания «любви» поисковых систем?

Как разнообразить страницу рубрик

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

Если вы настраивали или редактировали когда-нибудь рубрику в WP, то вы, вероятно, видели, что на странице присутствует поле «Decription» («Описание»).

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

Если в вашей теме это не работает, вы можете легко подключить эту возможность путем размещения следующего кода в шаблоне, отвечающем за рубрики — category.php. Если у вас в теме нет такого шаблона, тогда воспользуйтесь archive.php.

Тотальное улучшение страницы рубрик

Хотя поле с описанием рубрики и принимает HTML-код, позволяя совершать интересные вещи, есть более продвинутый способ тотального изменения описания рубрики – достаточно использовать плагин CategoryTinymce , который добавит в поле Decription дополнительный WYSIWYG-редактор.

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

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

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

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

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

Важные замечания

1. Шорткоды

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

Поместите следующий код в файл темы functions.php:

Add_filter("category_description", "do_shortcode");

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

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

Откройте шаблон вашей рубрики (category.php) и поместите в него код, отвечающий за вывод описания (базовый вывод описания должен стоять в середине):

Сюда вставьте код для вывода описания рубрик

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

Однако он может несколько отличаться в зависимости от используемой темы.

В стандартной теме Twenty Twelve, к примеру, этот код имеет несколько иной вид:

И вот как будет выглядеть готовый код, который понадобится вставить в category.php для указанной темы:

3. Все это работает и для меток.

Заключительный штрих – данная техника работает и для меток. Таким образом, если у вас есть важные страницы меток, вы можете несколько переработать их. Успехов вам на этой ниве!

Рубрики 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; } }