Поддержка Проблемы и решения вывод категорий в две колонки

  • Не получается сделать вывод категорий в две колонки.. Поискал в интернете, везде пишут один и тот же код:

    <?php
    $cats = explode("<br />",wp_list_categories('hide_empty=0&exclude=1&title_li=&orderby=count&orderby=name&show_count=1&child_of=3'));
    $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;
    ?>
    
    <div class="cats">
    <ul class="catLeft"><?php echo $catLeft;?></ul>
    <ul class="catRight"><?php echo $catRight;?></ul>
    </div>

    Также добавил стили в css
    Взято отсюда

    А задача следующая: есть одна большая рубрика, в ней подрубрики, в каждой из которых подподрубрики. Вот в этой большой рубрике и хочу выводить подрубрики (с подподрубриками) в две колонки.

    В коде child_of=3 — это я как раз указал родительскую рубрику. По вышеописанному коду рубрики выводятся, но в 1 столбец. Дело в том, что, если посмотреть Исходный код страницы, то видно, что catLeft и catRight вообще отсутствуют — все рубрики выводятся простыми ul li.

    Вот и не понятно, что делать… Возможно, этот код не срабатывает в новых версиях WordPress.. То как тогда по-новому написать? Или может есть другие способы вывода категорий в две колонки?

    Заранее спасибо.

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Модератор Юрий

    (@yube)

    Вы потеряли параметр «echo=0», вот wp_list_categories и выводит список, вместо того, чтобы вернуть для дальнейшей обработки. Кстати, «style=none» Вы тоже потеряли. А без него можно очень долго искать «<br» в списке. Тщательнее надо.

    действительно, надо и echo и style=none
    Вот получился, в принципе, рабочий код

    <?php
    $cats = explode("<br />",wp_list_categories('hide_empty=0&title_li=&echo=0&style=none&orderby=count&orderby=name&show_count=1&exclude=1&child_of=3'));
    $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>

    Но проблема теперь возникла с style=none, который убирает полностью всё оформление, и теперь не отделить рубрику от подрубрики, т.к. всё выводится через «li» в столбик в таком виде:

    <ul class="left">
    <li>рубрика</li>
    <li>подрубрика</li>
    <li>подрубрика</li>
    <li>рубрика</li>
    <li>подрубрика</li>
    <li>подрубрика</li>
    </ul>
    <ul class="right">
    <li>рубрика</li>
    <li>подрубрика</li>
    <li>подрубрика</li>
    <li>рубрика</li>
    <li>подрубрика</li>
    <li>подрубрика</li>
    </ul>

    А без style=none страница пустая

    <ul class="left"></ul>
    <ul class="right"></ul>

    Придумал как по-другому можно сделать, используя первый код сверху, чтобы сохранить стили оформления.
    Сначала используя exclude выведу нужные рубрики в левой колонке, потом также через exclude выведу и в правой колонке.. 🙂

    и код сокращается до:
    <?php wp_list_categories('hide_empty=0&exclude=11,19&title_li=&orderby=count&orderby=name&show_count=1&child_of=3'); ?>

    вдруг кому-то понадобится..

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «вывод категорий в две колонки» закрыта для новых ответов.