Вывод списка рубрик (категорий) на WordPress. Функции их аргементы и примеры использования.

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

Функция wp_list_categories()

Для вывода списка категорий WordPress в виде ссылок используеться встроенная функция WordPress — wp_list_categories().

Пример кода, в котором для данной функции задается набор аргументов.

<?php
$args = array(
	'orderby'            => 'name',
	'order'              => 'ASC',
	'style'              => 'list',
	'show_count'         => 0,
	'hide_empty'         => 1,
	'child_of'           => 0,
	'exclude'            => '',
	'include'            => '',
	'hierarchical'       => true,
	'title_li'           => __( 'Categories' ),
	'number'             => NULL,
	'echo'               => 1,
	'depth'              => 0,
	'pad_counts'         => 0,
	'taxonomy'           => 'category',
	'walker'             => 'Walker_Category',
	'separator'          => '<br />',
);

echo '<ul>';
	wp_list_categories( $args );
echo '</ul>';
?>

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

  • child_of – параметр, который указывает, отображать ли дочерние категории рубрик.
  • depth – задает глубину вложенности категорий. По дефолту параметр «0», что означает вывод всех категорий. «1» — выведет только рубрики первого уровня. «n» — произвольное число вложенности, например, задав «2», вы ограничите вывод рубрики только первого и второго уровня вложенности. «-1» — показывать все категории, в том числе и дочерние в одном формате с родительскими, без системы вложенности.
  • echo. Указывает выводить ли результат функции на экран, либо же просто возвращать его для последующей обработки. Варианты значений: «1» (true) – выводить, «0» (false) – не выводить, а просто вернуть данные.
  • exclude – задаются id категорий через запятую, которые нужно исключить из списка вывода.
  • include – также, задаются id рубрик через запятую, только уже тех, которые нужно вывести на сайте, остальные выводиться не будут.
  • hide_empty – указывает выводить или нет пустые категории, к которым не привязана ни одна запись.
  • hierarchical – показывать ли рубрики в виде вложенных списков в формате родительские и дочерние категории (древовидный вид).
  • order – направление сортировки в списке категорий. Два параметры «ASC», от меньшего к большему, например (1, 2, 3), «DESC» наоборот, от большего к меньшему (3, 2, 1).
  • orderby – параметр, по которому будет сортироваться ваш список рубрик. Возможные значения: «ID», «name» (названию), «slug» (по url, который вы задаете в админке), «count» (по количеству постов в категории), «term_group» (по группе). По-умолчанию сортировка идет по названию.
  • separator – код разделителя между элементами списка.
  • show_count – определяет отображать или нет количество записей в каждой категории. Число выводиться в скобках возле каждой ссылки. Значения: «1» (true) показывать, «0» (false) не показывать.
  • style – стиль вывода рубрик. Тут возможные значения: «list» — выводит ссылки рубрик в виде списка (<li>), соблюдает вложенность; «none» — выводит только ссылки (<a>), разделенные тегом (<br>).
  • taxonomy – определяет таксономию, с которой мы хотим работать, например «category».
  • title_li – параметр, где задается заголовок списка. Если в качества значения для этого параметра задать пустые кавычки, то значение выводиться не будет. По умолчанию – «Категории».
  • number – задает максимальное значение выводимых категорий. По дефолту выводятся все рубрики WordPress.
  • pad_counts – подсчет всех постов дочерних категорий и вывод числа с их количеством возле родительской категории.
  • walker — расширение объекта (класса), который предназначен для создания списка категорий.

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

Пример 1. Сортировка по ID.

Нужно вывести список рубрик в WordPress, отсортировать их по ID и исключить из списка несколько категорий.

<ul>
<?php wp_list_categories('orderby=id&exclude=4,7'); ?>
</ul>

Данный код отсортирует рубрики по ID и скроет вывод рубрик с ID 4 и 7.

Пример 2. Удаляем заголовок списка рубрик.

В этом примере мы указываем пустое значение для параметра title_li, которое и отвечает за заголовок блока, также мы задаем нужный нам список ID рубрик (2, 6), которые мы хотим выводить в этом блоке с помощью параметра include.

<ul>
	<?php wp_list_categories('include=2,6&title_li='); ?>
</ul>

Таким образом, с помощью include вы полностью можете контролировать, какие из рубрик выводить, а какие нет.

Пример 3. Вывод только дочерних пунктов одной из категорий.

Задача: вывести дочерние рубрики, вложенные в категорию с ID = 2, отсортировать их по количеству постов, задать направление сортировки.

<ul>
	  <?php wp_list_categories('orderby=count&order=DESC&child_of=2'); ?>
</ul>

Тут, параметр child_of=2 и указывает, из какой категории брать вложенные пункты.

CSS классы

Функция wp_list_categories() при использования вывода в виде списка создает следующую структуру классов для стилизации блока.

li.categories { ... }  /* общий селектор */
li.cat-item { ... }
li.cat-item-5 { ... }  /* Категория с ID 5 */
li.current-cat { ... }
li.current-cat-parent { ... }
ul.children { ... }

Функция get_categories()

Второй вариант вывода списка рубрик в CMS WordPress – это использование функции get_categories(), которая возвращает массив, состоящий из объектов категорий (или других таксономий), удовлетворяющих заданным разработчиком критериям. Каждый объект содержит данные о категории: ID, название, уровень вложенности и прочее.

Код примера использования:

<?php
$categories = get_categories( [
	'taxonomy'     => 'category',
	'type'         => 'post',
	'child_of'     => 0,
	'parent'       => '',
	'orderby'      => 'name',
	'order'        => 'ASC',
	'hide_empty'   => 1,
	'hierarchical' => 1,
	'exclude'      => '',
	'include'      => '',
	'number'       => 0,
	'pad_counts'   => false,
] );

if( $categories ){
	foreach( $categories as $cat ){
		// Данные в объекте $cat
        // Пример использования данных из объекта $cat
		// $cat->term_id
		// $cat->name (Рубрика 1)
		// $cat->slug (rubrika-1)
		// $cat->taxonomy (category)
		// $cat->parent (0)
		// $cat->count (14)
		// $cat->cat_ID (4)
		// $cat->category_count (14)

	}
}
?>

Пример 4. Вывод ссылок на категории через запятую (в том числе будут включены и пустые).

Для вывода ссылок на страницы рубрик, можно также использовать функции: get_category_link() или get_term_link().

<?php
    $webpro_categories = get_categories('hide_empty=0');
    $category_link_array = array();
    foreach( $webpro_categories as $cat ){
        $category_link_array[] = '<a href="' . get_category_link($cat->term_id) . '">' . $cat->name . '</a>';
    }
    echo implode(',', $category_link_array);
?>

Таким образом, используя функцию wp_list_categories(), которая помогает вывести как все, так и определенные рубрики, а также функцию get_categories(), которая помогает получить объекты всех рубрик для последующей работы с ними, можно реализовать кастомный блок с категориями на сайте на WordPress. Еще больше аргументов для функций для реализации гибкой настройки функций вы можете найти в кодексе данной CMS.

Поделиться в социальных сетях:
Нет комментариев к данной статье

Оставить новый комментарий

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