Отображение рубрик в WordPress в несколько колонок

Отображение рубрик в WordPress в несколько колонок
Бывают случаи, когда необходимо вывести список категорий в две колонки. Это можно сделать с помощью приема который позволяет заменить традиционный 1-колоночный вывод рубрик в блоге на отображение рубрик в 2 колонки.

Для этого нам нужно найти в файле Вашей темы (чаще всего в sidebar.php) стандартный код вывода рубрик, обычно это:

<?php wp_list_categories() ?>

И заменить его на:

<?php
$cats = explode("<br />",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.'<li>'.$cats[$i].'</li>';
elseif ($i>=$cat_n/2):
$cat_right = $cat_right.'<li>'.$cats[$i].'</li>';
endif;
endfor;
?>

<ul class="left"><?php echo $cat_left;?></ul>
<ul class="right"><?php echo $cat_right;?></ul>

Вот и все! Теперь список Ваших категорий выведется в два столбца.

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

<?php
$cats = explode("<br />",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/4):
$cat_one = $cat_one.'<li>'.$cats[$i].'</li>';
elseif ($i>=$cat_n/4 && $i<($cat_n/4)*2):
$cat_two = $cat_two.'<li>'.$cats[$i].'</li>';
elseif ($i>=($cat_n/4)*2 && $i<($cat_n/4)*3):
$cat_three = $cat_three.'<li>'.$cats[$i].'</li>';
elseif ($i>=($cat_n/4)*3):
$cat_four = $cat_four.'<li>'.$cats[$i].'</li>';
endif;
endfor;
?>

<ul class="clientsCol"><?php echo $cat_one;?></ul>
<ul class="clientsCol"><?php echo $cat_two;?></ul>
<ul class="clientsCol"><?php echo $cat_three;?></ul>
<ul class="clientsCol"><?php echo $cat_four;?></ul>

Дальше уже наверное будет понятно и Вы сможете сами переделать код под три и больше колонок. Если нет, спрашивайте в комментариях!

Предыдущие записи из рубрики `Настройка WordPress`

15 комментариев

Goodwin, 25.06.2009 в 10:42

действительно, интересное решение. давно хотел сделать вывод списка в несколько колонок. нужно будет попробовать.....

ОтветитьОтветить
Deimos, 25.06.2009 в 12:06

Ждем этой приколюшки в твоем новом шаблоне - пусть он станет еще лучше 😉

ОтветитьОтветить
sbseo, 02.09.2009 в 23:12

У вас ошибка в первом примере, тег li не закрыт

ОтветитьОтветить
Deimos, 03.09.2009 в 06:00

sbseo, спасибо за внимательность 😉 Исправил! Где то у себя на сайте применили данный прием?

ОтветитьОтветить
sbseo, 03.09.2009 в 07:31

Deimos, да применил. Я к вам попал как раз по запросу с яндекса, очень интересовала эта фишка. Я поставил на один из сайтов шаблон, у которого широкий сайдбар внутри поделен на 2 колонки, каждая заполняется соотвествующим инклудом. А мне не нужно ничего кроме рубрик. Вот и хотел убрать инклуды и создать 2 колонки рубрик. Перерыл все доки, как запросом выдрать список категорий, но так и не нашел. О вашем решении даже и не подумал, что можно просто распарсить результат работы апи. Спасибо вам большое, очень помогли.

ОтветитьОтветить
BuxFactor, 16.09.2009 в 11:55

Да, решение интересное =) Особенно подит, когда сайдбар одноколоночный и широкий. Пустует место возле списка рубрик.

ОтветитьОтветить
RodgerFox, 22.03.2010 в 20:41

эм.. а как к этому стили прикрутить? а то у меня правая колонка на левую прыгает =\

ОтветитьОтветить
Игорь, 02.07.2011 в 03:33

Добрый день! У меня что-то не получилось. Может поможете, плиз? Версия WP 3.0.1. Шаблон - http://www.wpbot.ru/?p=494. Вероятно, не работает из-за использования плагина MyCategoryOrder.

ОтветитьОтветить
Дмитрий, 04.09.2011 в 02:14

не работает вообще никак. как отображалось в одну колонку, так и дальше....

ОтветитьОтветить
Андрей, 21.09.2011 в 16:41

А как можно увеличить высоту поста при поиске по рубрикам? Просто когда я нажимаю на рубрику, у меня появляется список, но сами посты очень узкие и поэтому определить, что это за пост можно только по заголовкам.

ОтветитьОтветить
Виталий, 06.11.2013 в 21:22

Спасибо! Сначала не ставилась, потом в стиль добавил:

ul.left {
float:left;
width: 42%;
}
ul.right {
float:right;
width: 42%;

И все стало норм. Только сейчас думаю над тем, как поставить возле каждой рубрики кол-во постов?

ОтветитьОтветить
Ильяс, 05.03.2014 в 19:52

Проще сделать так:
добавить в functions.php

register_sidebar(array('name'=>'sidebar_categories','id'=>'sidebar_categories', 'before_widget'=>'','after_widget'=>''));

В sidebar.php

dynamic_sidebar('sidebar_categories');

в style.css

.categories li{
width:50%;
float: left;
}

И все это заполнить виджетом.

ОтветитьОтветить
Ильяс, 05.03.2014 в 19:55

Извинияюсь,

register_sidebar(array('name'=>'sidebar_categories','id'=>'sidebar_categories', 'before_widget'=>'<div class="categories">','after_widget'=>'</div>'));

ОтветитьОтветить
Andrew, 27.03.2014 в 15:14

Интересует отображение рубрик в 3 колонки, можно код?

ОтветитьОтветить
Pasagir, 26.02.2016 в 17:13

Ильяс, спасибо, напомнил про возможность вывода нового виджета.
Сделал по твоей технологии.

ОтветитьОтветить

Комментировать