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

wp_list_categories()

Один из параметров этой функции

child_of

который по умолчанию = 0

Чтобы вызвать категории определенной категории нужно вызвать функцию wp_list_categories() с параметром child_of и указать параметру ID категории, дочерние категории которой мы собираемся вывести.

Пример использования в шаблоне:

<?php wp_list_categories('orderby=name&title_li=&child_of=3'); ?>

Отобразится список подкатегорий категории с ID=3;

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

<?php wp_list_categories('orderby=name&title_li=&child_of='.$cat); ?>

Переменная $cat хранит ID категории, в которой мы сейчас находимся.

Может возникнуть случай, что wordpress категория не содержит подкатегорий (дочерних категоирй), в этом случае в шаблон функция будет выводить сообщение "Нет рубрик". Чтобы избавиться от этого сообщения можно написать функцию, которая будет удалять эту надпись и повесить на фильтр wp_list_categories. Пример кода, который использую я:

function noEmptyCat($output) {
	if($output == "<li>Рубрик нет</li>") {
		$output = "";
	}
	return $output;
}
add_filter('wp_list_categories', 'noEmptyCat');

Можете просто вставить этот код в шаблон function.php в своей wordpress теме.
Если функция wp_list_categories() возвращает сообщение "Рубрик нет", то переменная перезаписывается на пустоту.

Прочтите также: