Выделение ссылки раздела, в котором находится текущая статья

Admin PHP, WordPress

WordPress применяет к текущей категории стиль current-cat. Это позволяет пользователю, с помощью css, выделить текущую категорию жирным цветом или любым другим способом.

Однако current-cat по умолчанию не вставляется в метки. Это можно исправить с помощью выделения меток.

А если необходимо выделить стилем категорию, в которой находится текущая статья, то для этого следующий код надо положить в файл functions.php своей темы на WordPress:

// вставляет стиль .current-cat в категорию к которой присоединена читаемая статья
add_filter('wp_list_categories','style_current_cat_single_post');
function style_current_cat_single_post($output) {
    if( is_single() ) :
        global $post;
        foreach ( get_the_category($post->ID) as $cat ) {
            $cats[] = $cat->term_id;
        }
        foreach($cats as $value) {
            if(preg_match('#item-' . $value . '">#', $output)) {
            $output = str_replace('item-' . $value . '">', 'item-' . $value . ' current-cat">', $output);
            }
        }
    endif;
return $output;
}
Метки:

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

Комментарии к статье “Выделение ссылки раздела, в котором находится текущая статья” (6)

  • Аватар
    Alter
    05.10.2017 в 06:50

    Добрый день. А из-за чего класс current-cat может не срабатывать через css? У себя на сайте вижу по исходному коду, что текущей категории присваивается класс current-cat (напр. li class=»cat-item cat-item-6 current-cat») — прописываю в css свои свойства этому классу, но ничего не происходит.

    • Admin
      Admin
      Автор записи
      05.10.2017 в 08:51

      А как прописываете класс? Может там где ошибка?

      Рабочий пример:

      .current-cat,
      .current-page {
          font-weight: bold;
      }

      Проверьте также чтобы на стиль не влиял кэш.

  • Аватар
    Alter
    06.10.2017 в 13:02

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

    • Admin
      Admin
      Автор записи
      06.10.2017 в 13:43

      В современных браузерах кэширование работает очень странно. Порой недостаточно сбросить кэш, он почему-то остаётся. Эта проблема решается по-разному. Например, если браузер ни в какую не хочет очищать, можно переименовать файл стилей (не забыть поменять путь к стилю). В этом случае браузер вынужден будет загрузить новый файл стилей.

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Выделение ссылки раздела, в котором находится текущая статья"