Рубрика: WordPress » Стили в WordPress »

Стили для текущей записи и текущей рубрики в меню WordPress

WordPress добавляет для текущей рубрики класс current-cat, а для текущей записи - класс category-current-item, но в файле стилей темы style.css стили для этих классов могут быть не прописаны (как, например, в дефолтной теме WordPress Twenty Ten). Задача - выделить в меню текущую рубрику и текущую запись.Также на странице одиночной записи добавим класс current-cat для всех рубрик, в которые входит текущая запись.

Текущая рубрика в меню WordPress

Текущая рубрика в меню WordPress

При выводе в меню списка ссылок на рубрики/записи стандартными функциями WordPress для текущей рубрики (на странице архива рубрики - is_category) добавляется класс
current-cat
а для текущей записи (на странице отдельной записи - is_single) - класс
category-current-item.

1. Стили для классов текущей рубрики и текущей записи

Зададим стили для этих классов, чтобы в меню на странице архива рубрики ссылка на текущую рубрику отличалась от других ссылок, а ссылка на запись отличалась от ссылок на другие записи, например:

/* Рамка и отступ от рамки для текущей рубрики и текущей записи: */
.current-cat, .category-current-item {
border: 1px dotted #666 !important;
padding: 4px;
}
/* Выравнивание только для ссылки на текущую запись: */
.category-current-item { text-align: center;}
/* Цвет текста ссылки */
.current-cat a, .category-current-item a {color: grey !important;}

Теперь на странице архива рубрики ссылка в меню на текущую рубрику выделена рамкой и цветом. Но чтобы рубрика выделялась также и на страницах отдельных записей (is_single), входящих в эту рубрику, нужно добавить для нее тот же самый класс стилей current-cat (или другой класс)

Добавление класса для рубрик

Добавить класс стилей можно с помощью фильтра для результата функции, которая выводит ссылки на рубрики. Фильтр для wp_list_categories (в файле темы functions.php):

/*
Добавление класса 'текущая-рубрика' для рубрик,
в которые добавлена текущая запись
*/
add_filter('wp_list_categories','ccats');
function ccats($list) {
if ( ! is_single() ) return $list;
foreach((get_the_category()) as $category) {
$temp[] = $category->cat_ID;
}
$temp = '/(cat-item-('.join('|',$temp).'))[ |"]/';
$list = preg_replace($temp,' current-cat $1"',$list);
return $list;
}

(код с форума http://mywordpress.ru/support/viewtopic.php?id=3395)

Опубликовано в рубрике Стили в WordPress | с метками , , , . |

Еще записи

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *