Получить Id категории первого уровня

Задача такая: есть 4 основные категории: Категория 1, Категория 2, Категория 3, Категория 4. У каждой из категорий есть подкатегории.
Нужно: Чтобы по клику на основную категорию, выводились подкатегории (это просто, переменная $cat), И(!) при переходе на подкатегорию в сайдбаре все равно отображались все подкатегории конкретной родительской категории. Аналогично, если человек просматривает запись из подкатегории – сбоку должны выводится все подкатегории основной категории первого уровня.

Примеры:
Человек перешел в раздел Категория 1 – у него отображаются все подкатегории этого раздела (если они есть).
Человек перешел в раздел Категория 1 -> Подкатегория 5 – у него так же отображаются все подкатегории раздела Категория 1, ведь Подкатегория 5 – это дочерний раздел Категории 1.
Человек перешел в запись Категория 1 -> Подкатегория 5 -> Какая-то запись – у него отображаются все подкатегории раздела Категория 1, потому что это родительская категория записи первого уровня.

Вот как реализовать такую задачу? Второй день ломаю голову, кучу статей в кодексе перечитал.

Делал похожее, но не с категориями, а со страницами. Под свои нужды затачивал плагин Sub Pages widget. Попробуйте взять его за основу, возможно поможет чем-нибудь.

Должно помочь в решении задачи
http://forum.maxsite.org/viewtopic.php?id=11135

Делал похожее, но не с категориями, а со страницами. Под свои нужды затачивал плагин Sub Pages widget. Попробуйте взять его за основу, возможно поможет чем-нибудь.

Именно так со страницами в том же проекте проблему со страницами и решил. Но вот с категориями ступор…

Ура нашел решение сам!! Правда оно не идеально и подойдет, только если двухуровневая вложенность рубрик (мой случай). Логика скрипта основана на том, что у категорий первого уровня ИД родителя равняется 0. Т.е. если ИД равен нулю, то параметр для листинга категорий child_of ставим переменную с ИД текущей категории, в противном случае получаем ИД родительской категории.

<?php
if ( is_category() ) {
?>

<ul id="addsnav">

<?php
  $cat = get_category(get_query_var('cat'),false);
  $cat_parent = $cat->parent; // ID родительской категории
  $current_cat = get_query_var('cat'); // ID текущей категории
  if ($cat_parent == 0) {
  wp_list_categories('depth=1&hide_empty=0&title_li=&show_count=0&child_of='.$current_cat);
  } else {
  wp_list_categories('depth=1&hide_empty=0&title_li=&show_count=0&child_of='.$cat_parent); 
  }
?>

</ul> 

<?php
}
?>
Anonymous
Отправить
Ответ на: