Способы добавление класса для Body в WordPress

Способ первый: Редактирование темы: передача значения класса Body. Для добавления обычно используют следующую строку:

<body <?php body_class(); ?>>

к которой следует добавить:

<body <?php body_class( 'my-class' ); ?>>

Добавить несколько классов:

<body <?php body_class( array( "class-one", "class-two", "class-three" ) ); ?>>

Пример добавления класса с условием:

<?php if ( is_shop() ) { body_class( 'is-woocommerce-shop' ); } else { body_class(); } ?>

Код проверяет, что первая функция возвращает true, если это правда, то класс body is-woocommerce-shop будет добавлен к нему; в противном случае, если это не так, то отображается только класс Body по умолчанию.

Способ второй: добавление класса Body с помощью фильтра.

add_filter( 'body_class','my_body_classes' );
function my_body_classes( $classes ) {
 
    $classes[] = 'class-name';
     
    return $classes;
     
}

Добавление нескольких классов для Body с помощью фильтра:

add_filter( 'body_class','my_body_classes' );
function my_body_classes( $classes ) {
 
    $classes[] = 'class-name';
    $classes[] = 'class-name-two';
     
    return $classes;
     
}

Добавление нескольких классов с условием:

add_filter( 'body_class','my_body_classes' );
function my_body_classes( $classes ) {
 
    if ( is_shop() ) {
     
        $classes[] = 'class-name';
        $classes[] = 'class-name-two';
         
    }
     
    return $classes;
     
}

Добавление класса Body для шаблона страницы:

add_filter( 'body_class','halfhalf_body_class' );
function halfhalf_body_class( $classes ) {
 
    if ( is_page_template( 'page-halfhalf.php' ) ) {
        $classes[] = 'halfhalf-page';
    }
     
    return $classes;
     
}

Это добавит класс Body halfhalf-page, если шаблон страницы page-halfhalf.php

Для одиночных записей

//добавление своего класса на нужных страницах start
function wph_add_own_class($classes) {
    if (is_single()) {
        $classes[] = 'my-class-single';
    }
    return $classes;
}
add_filter('body_class', 'wph_add_own_class');
//добавление своего класса на нужных страницах end

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

//добавление своего класса на нужных страницах start
function wph_add_own_class($classes) {
    $temp = get_post_meta(get_the_ID(), 'my_field', true); 
    if (is_single() and $temp=='true') {
        $classes[] = 'my-field-true';
    }
    return $classes;
}
add_filter('body_class', 'wph_add_own_class');
//добавление своего класса на нужных страницах end

В этом примере класс my-field-true будет добавлен только, если произвольное поле my_field текущей записи равно true. Таким же образом можно "пометить" любую выводимую движком страницу на основе каких-либо своих условий.

Удаление класса Body

add_filter( 'body_class', 'adjust_body_class' );
function adjust_body_class( $classes ) { 
 
    foreach ( $classes as $key => $value ) {
        if ( $value == 'woocommerce-page' ) unset( $classes[ $key ] );
    }
     
    return $classes; 
     
}

В этом примере мы перебираем массив имен классов, удаляем имя класса woocommerce-page, если оно существует, а затем возвращаем все классы кроме тех, которые были удалены.

Ещё один способ добавления класса

// Add specific CSS class by filter.
 
add_filter( 'body_class', function( $classes ) {
    return array_merge( $classes, array( 'class-name' ) );
} );

Источник