Меню с подрубриками этой рубрики

Здравствуйте, столкнулся с такой проблемой.
Есть (Главная страница) и две основные рубрики (Энциклопедия) (Библиотека), в основных рубриках есть свои подрубрики.
Суть вопроса в следующем, мне нужно что бы на главной странице слева было меню в котором 2 пункта (Энциклопедия) и (Библиотека), если зайти в рубрику (Энциклопедия), то слева должно появиться меню со всеми подрубриками этой рубрики, и соответственно если зайти в (Библиотека) то должно появиться новое меню с подрубриками этой рубрики.
Пока выходит только, показывать все меню, а как прятать меню если находишься в разных рубриках.

Windaiv
Оцените автора
Добавить комментарий

  1. Windaiv

    разобрался. удаляем…

    Ответить
  2. tiaurus

    То есть вам нужно сделать, чтобы выполнялись условия:
    1. если это главная страница, то в сайдбаре выводятся только рубрики, без подрубрик
    2. если это архив какой-то рубрики, то в сайдбаре выводится данная рубрика с подрубриками
    Правильно я понимаю?
    Например, у вас есть две категории, у первой ID=1, у второй ID=2. В первой категории есть подкатегории с ID 3, 5, 7, во второй категории есть подкатегории 4, 6, 8.
    Вывести список всех главных рубрик без подрубрик можно так:

    <?php wp_list_categories('orderby=name&show_count=1&hierarchical=1&depth=1'); ?>

    Вывести список рубрик со всеми подрубриками можно так:

    <?php wp_list_categories('orderby=name&show_count=1&hierarchical=1&depth=0'); ?>

    За отображение подрубрик отвечает параметр depth.
    Создадим три кода с разными условиями.
    Для вывода в сайдбаре на главной странице главных рубрик без подрубрик нужно использовать примерно такой код:

    <?php if (is_home())
    {
    echo ' <?php wp_list_categories("orderby=name&show_count=1&hierarchical=1&depth=1"); ?> ';
    }
    ?>

    Для вывода в сайдбаре названия категории 1 с подкатегориями 3, 5, 7 добавим такой код:

    <?php if (is_category('1'))
    {
    echo ' <?php wp_list_categories('orderby=name&show_count=1&hierarchical=1&depth=0&exclude=2,4,6,8'); ?>/ ';
    }
    ?>

    2, 4, 6, 8 — ID категорий, которые нужно исключить.
    То же самое проделываем и со второй категорией, только с точностью до наоборот:

    <?php if (is_category('2'))
    {
    echo ' <?php wp_list_categories('orderby=name&show_count=1&hierarchical=1&depth=0&exclude=1,3,5,7'); ?>/ ';
    }
    ?>

    Подробнее о wp list categories: http://codex.wordpress.org/Template_Tags/wp_list_categories
    Подробнее о is_category и is_home: http://codex.wordpress.org/Conditional_Tags

    Ответить
  3. tiaurus

    А как вы решили проблему?

    Ответить
    1. Windaiv

      Установил плагин Navigation Manager
      В нём сделал 3 меню, 1-(главная и 2 рубрики) 2-(все подрубрики Энциклопедии) 3-(все подрубрики Библиотеки)
      Затем в сайд бар добавил код, там сначала проверка идёт в какой рубрике мы щас находимся и проверка, находимся ли мы на главной странице.

      <li class="widget_categories">
      <h2>Главное меню</h2>
      <ul>
      <li class="noline"><?php if(function_exists('wp_navigation')){
      wp_navigation('title_li=&group=1&echo=1'); } ?></li>
      </ul>
      </li>
      
      <?php global $is_home;
      if ($is_home) {} else {if ( in_category('enciklopediya')) { ?>
      <li class="widget_categories">
      <h2>Энциклопедия</h2>
      <ul>
      <li class="noline"><?php if(function_exists('wp_navigation')){
      wp_navigation('title_li=&group=2&echo=1'); } ?></li>
      </ul>
      </li>
      <?php } else { ?>
      
      <?php }} ?>
      
      <?php if ($is_home) {} else {if ( in_category('biblioteka') ) { ?>
      <li class="widget_categories">
      <h2>Библиотека</h2>
      <ul>
      <li class="noline"><?php if(function_exists('wp_navigation')){
      wp_navigation('title_li=&group=3&echo=1'); } ?></li>
      </ul>
      </li>
      <?php } else { ?>
      
      <?php }} ?>
      
      Ответить
    2. Windaiv

      собственно говоря тут можно посмотреть что вышло anonsa.net

      Ответить
    3. Windaiv

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

      Ответить
      1. tiaurus

        Если используете функцию wp list categories (см. мой ответ выше), то за вывод количества постов в рубрике отвечает параметр show_count=1.

        Ответить
  4. как в отображаемый список добавить посты находящиеся в под рубрике и убрать название самой рубрики

    Ответить
  5. Vitor

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

    <?php if (is_home()): ?> 
    <?php echo wp_list_categories("orderby=name&title_li&show_count=0&hide_empty=0&hierarchical=1&depth=1"); ?> 
    <?php endif; ?>
    
    <?php if (is_category('')): ?> 
    <?php $args = array(
    	'orderby'            => 'name',
    	'title_li'           => __( '' ),
    	'show_count'         => 0,
    	'hide_empty'         => 0,
    	'child_of'           => $cat,
    	'depth'              => 1,
    ); ?>
    <?php echo wp_list_categories($args) ?>                           
    <?php endif; ?>

    Вставляете в любое место шаблона,обычно это header,ну и оборачиваете каким нибудь стилем

    По аргументам можно почитать тут http://codex.wordpress.org/Template_Tags/wp_list_categories#Include_or_Exclude_Categories

    Ответить