Как вывести категории в две колонки

Как вывести категории в две колонки | n-wp.ru

Обычно категории выводятся в сайдбаре одной колонкой. Однако если категорий много, а сайдбар широкий, то можно сэкономить вертикальное пространство, выведя их в две колонки.

tiaurus-2010-01-06_173957

Вывести рубрики в две колонки поможет ручная правка кода. Если рубрики выводятся виджетом, то после добавления специального кода, можно отказаться от виджета вообще. Если категории выводятся в сайдбаре автоматически, то есть код предусмотрен уже в теме, то мы сейчас исправим его на тот, который нам нужен. Найдите в файле sidebar.php примерно такой код:


Это и есть тот код, который выводит категории списком в одну колонку. Его нужно заменить на этот:

 <?php
$cats = explode("
",wp_list_categories('title_li=&echo=0&depth=1&style=none')); $cat_n = count($cats) - 1; for ($i=0;$i<$cat_n;$i++): if ($i<$cat_n/2): $cat_left = $cat_left.'
  • '.$cats[$i].'
  • '; elseif ($i>=$cat_n/2): $cat_right = $cat_right.'
  • '.$cats[$i].'
  • '; endif; endfor; ?>

    Так как у каждой колонки есть ширина, то ее следует определитьв файле style.css. Например, ширина сайдбара равна 300px. Тогда в style.css добавляем:

     .right {float:left; width:140px;}
    .left {float:left; width:140px;}

    Поэкспериментируйте с шириной, чтобы суммарная ширина колонок подходила к ширине сайдбара.

    Автор tiaurus 2182 Articles
    Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

    5 Комментарии

    1. Отличная статья, спасибо. В итоге код выводит все категории в которых есть посты. А может сможешь подсказать:
      А если к примеру нужно вывести все названия категорий внутри поста которые принадлежат этому посту и вывести их в две колонки?
      К примеру есть таксономия ‘convenience’. Код покажет все названия таксономии.
      $atributes = wp_get_object_terms($post->ID, ‘convenience’);
      if( $atributes && ! is_wp_error($atributes) )
      {
      foreach( $atributes as $term )
      {
      echo $term->name
      }
      }

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

    Ваш электронный адрес не будет опубликован.


    *