Как в списке рубрик WordPress-сайта выделить рубрику текущей записи

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

Эта задача решается всего несколькими строчками php-кода, которые добавляют нужной рубрике специальный CSS-класс. А само выделение рубрики, как вы, наверное, уже догадались, будет осуществляться с помощью CSS.

Находим в шаблоне вашего сайта стандартную фукнцию вывода списка рубрик:

<?php wp_list_categories('тут_могут_быть_какие-то_параметры'); ?>

И вместо нее вставляем вот такой код:

<?php
if (is_single()) {
	$cat = get_the_category();
	$cat = $cat[0]->cat_ID;
	$currentCat = '&current_category='.$cat;
}
wp_list_categories('тут_могут_быть_какие-то_параметры'.$currentCat);
?>

И, конечно, не забудьте вставить параметры функции wp_list_categories, которые у вас были, т.е. чтобы строка с этой функцией в итоге выглядела примерно так:

wp_list_categories('show_count=1&orderby=term_group&title_li='.$currentCat);

В результате к соответствующей рубрике будет добавляться класс current-cat, используя который можно выделить рубрику через CSS, например, так:

li.current-cat {
	font-weight: bold;
}

Комментарии (8)

  1. Влад
    16 июля 2014 г. в 22:24

    Добрый вечер! А этот код работает с пользовательской таксономией? Кажется нет, какой другой использовать код?

    1. 17 июля 2014 г. в 09:59 / ответ на коммент Влад

      Не знаю, таксономиями не пользуюсь.

      1. Влад
        17 июля 2014 г. в 23:10 / ответ на коммент Dimox

        Dimox, можете помочь? очень нужно…

        1. 18 июля 2014 г. в 09:53 / ответ на коммент Влад

          Если бы я знал, как это делается, то написал бы в предыдущем комментарии.

          1. Влад
            20 июля 2014 г. в 10:12 / ответ на коммент Dimox

            нашел рабочий способ сделать это для таксономии, вот код, возможно кому-то пригодится)

            $term_list = wp_get_post_terms($post->ID, 'ВАША_ТАКСОНОМИЯ', array("fields" => "ids"));
            wp_list_categories('orderby=term_order&amp;taxonomy=ВАША_ТАКСОНОМИЯ&amp;hide_empty=&amp;title_li=&amp;current_category='.$term_list[0]);
            1. Андрей
              16 июля 2015 г. в 20:04 / ответ на коммент Влад

              Как раз мне и пригодится))) Буду пробовать.

  2. Теркин
    1 ноября 2015 г. в 06:50

    Приветствую, а как к дочернему элементу приклеить свой клас, а именно к

    <ul class="children"

    присобачить

    .dropdown

    , надеюсь вопрос понятен.

  3. 18 апреля 2017 г. в 10:57

    Спасибо! Думал это будет сделать сложней)

Ваш комментарий

Жирный текст

Ссылка

Цитата

Внутристрочный код

CSS-код

HTML-код

JavaScript-код

PHP-код