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;
}
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;
}
Добрый день. А из-за чего класс current-cat может не срабатывать через css? У себя на сайте вижу по исходному коду, что текущей категории присваивается класс current-cat (напр. li class=»cat-item cat-item-6 current-cat») — прописываю в css свои свойства этому классу, но ничего не происходит.
А как прописываете класс? Может там где ошибка?
Рабочий пример:
.current-page {
font-weight: bold;
}
Проверьте также чтобы на стиль не влиял кэш.
Да так и прописываю, но безрезультатно
Вероятно, чего-то не хватает. Кидайте ссылку на страницу сайта (потом удалю), где стиль показан но не применяется.
Вероятно вы правы были на счет кэширования, хотя плагины кэширования не использую и браузерный кэш сбрасывал, но через 2 дня оставления стилей в покое, они применились сами. Наверно яндекс браузер чудит.
В современных браузерах кэширование работает очень странно. Порой недостаточно сбросить кэш, он почему-то остаётся. Эта проблема решается по-разному. Например, если браузер ни в какую не хочет очищать, можно переименовать файл стилей (не забыть поменять путь к стилю). В этом случае браузер вынужден будет загрузить новый файл стилей.