Добро пожаловать в самую большую библиотеку wordpress-кода в рунете

Добавить класс к body, если отображается дочерняя страница

WordPress · 04.09.2016 11:53

0 0 667

Фильтр, который добавляет к страницам категорий и к страницам записей класс тегу body с указанием, что данная категория является дочерней, или что данный пост принадлежит к дочерней категории. Может быть полезно, если нужно оформить все дочерние категории в одном стилей. 

add_filter('body_class','add_category_to_single');
function add_category_to_single($classes) {
if (is_single() ) {
global $post;
foreach((get_the_category($post->ID)) as $category) {
// add category slug to the $classes array
$classes[] = 'category-'.$category->slug;
$parent = $category->category_parent;
if( $parent ) {
$parent_cat_slug = 'cat-parent-'.get_category( $parent )->slug;
if( !in_array( $parent_cat_slug, $classes ) ) $classes[] = $parent_cat_slug;
}
}
}
if( is_category() ) {
$cat_id = get_query_var('cat');
//get category parent slug if exists
$parent_id = get_category( $cat_id )->category_parent;
if ( $parent_id ) $classes[] = 'cat-parent-' . get_category( $parent_id )->slug;
//get top level category ancestor slug if grandparent etc exists
$ancestors = get_ancestors( $cat_id, 'category' );
if( count( $ancestors ) > 1 ) $classes[] = 'cat-ancestor-' . get_category(array_pop($ancestors))->slug;
}
// return the $classes array
return $classes;
}

Обсудить сниппет
romapad

romapad

присоединился
30.04.2016

  • 55 Добавлено
    Сниппетов
  • 2 Получено
    Лайков
  • 0 Comments Posted
Теги
Поделиться с друзьями