Объединение списка категорий и списка страниц + подсветка текущей

Добрый день.

Я сейчас закопался в стандартных функциях WP и, чувствую, не скоро оттуда вылезу.
А мне всего лишь нужно вывести в одном списке все категории и все страницы, причём при нахождении в категории (сама категория, пост) или на странице, пункт должен подсвечиваться:

<ul>
    <li><a href="#">Категория 1</a></li>
    <li class="cur"><a href="#">Категория 2</a></li>
    <li><a href="#">Страница 1</a></li>
    <li><a href="#">Страница 2</a></li>
</ul>

Все решения на эту тему страдают большой навороченностью, через которую мне сложно прорваться, учитывая мои скромные познания в PHP…
Не подскажете ли в какую сторону двигаться с моими запросами и может быть какие плагины поковырять?

Спасибо.

вот тебе код для всех страниц + категорий ………..

<ul><?php wp_list_pages('title_li='); ?></ul>
            
<ul><?php wp_list_categories('title_li='); ?></ul>

а что касается подсветки там уже тебе надо программировать…… думаю без хороших знаний ПХП и стандартов вордпресса не обойтись!!!

Спасибо за наводку! Попробовал…

В принципе, в эти механизмы подсветка встроена:

<li class="cat-item cat-item-3 current-cat">Текущая категория
<li class="page_item page-item-15 current_page_item ">Текущая страница

…однако мне нужен всего один класс, причём одинаковый и для страниц и для категорий.
Наверное нужно будет вытащить эти функции в funtions.php, обозвать иначеи и там и доточить до нужного состояния.
Или же можно как-то перезагрузить эти функции, исключив из них лишнее?

Выяснилось, что CSS-класс для текущей страницы зашит в класс Walker_Page

class Walker_Page extends Walker {
…
    $css_class .= ' current_page_item ';
…
}

Ужас какой. Как вы думаете, стоит ли залазить так глубоко, копируя куски класса или можно просто почистить то, что мне нужно str_replace’ом?

…однако мне нужен всего один класс, причём одинаковый и для страниц и для категорий.

В CSS

.current-cat, .current_page_item { ..... }

Да знаю я как это написать в CSS, но я не привык стелиться под движок 🙂
От этого страдают все работающие со мной программисты.

Особенно меня пугает гора бесполезных экстра-классов… наверное буду мучиться с replace’ом.

Может кому пригодится:

function pp_menu() {

    $text = wp_list_categories('echo=0&title_li=') . wp_list_pages('echo=0&title_li=');
    $pattern = '$(.+?) class="([a-z][a-z0-9_\- ]+?)"(.+?) title=".+?"(.+)$'; 

    echo preg_replace_callback($pattern, "pp_menu_prepare", $text);
}

function pp_menu_prepare($matches) {
    return $matches[1] . (false === strstr($matches[2], 'current') ? '' : ' class="cur"') . $matches[3] . $matches[4];
}

Не проверял, но выглядит красиво 🙂

Вот бы ещё получать текущую категорию на странице поста…
Неужели это только я такой требовательный?

Вот бы ещё получать текущую категорию на странице поста…

КатегорИИ. Все assigned to the post. get_the_category()

Неужели это только я такой требовательный?

Ыш размечталси 😀

А это Вы не хлебные крошки делаете? а то вот и вот

Какие такие крошки? Сухари сушим!

Я вот что клепаю:

[ Статьи    ] — рубрика
[ Заметки   ] — рубрика
[ Портфолио ] — страница
[ Об авторе ] — страница

С текущей страницей разобрался: wp_list_pages(‘echo=0&title_li=’)
С текущей категорией почти: она обозначается только тогда, когда нахожусь в самой категории, но не тогда, когда нахожусь в пубикации, относящейся к категории.

Буду думать как бегать по категориям и сравнивать со списком имеющихся… Уфф…

Anonymous
Отправить
Ответ на: