Выводим дочерние категории в wordpress – wp_list_categories()
Иногда в 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() возвращает сообщение "Рубрик нет", то переменная перезаписывается на пустоту.
ordPress плагины
А рассказать как в переменную $cat попал ID записи Вы конечно же забыли…, уже часа 2 с этим вожусь и никак понять не могу…
Смотрите код функции noEmptyCat в посте. Запись происходит присвоением переменной $output = «»;
«Если функция wp_list_categories() возвращает сообщение «Рубрик нет», то переменная перезаписывается на пустоту.»
А как эта пустота записывается, поясните для чайников?
Подскажите, а как организовать аналогичный вывод, для терминов сustom taxonomy (для wordpress 3.0). По идее должно быть аналогично (это по сути те же категории), но данный код не работает? Подозреваю, надо заменить переменную $cat на что-то другое, только вот на что?