body_class

Позволяет изменить список имен CSS-классов для текущей записи или страницы
Хук WordPress
INT 2.8.0
WordPress Icon
Содержание
  1. Описание хука
  2. Примеры использования
  3. Применение фильтра body_class для изменения классов тела страницы
  4. Добавление дополнительных классов к телу страницы с помощью хука body_class
  5. Изменение порядка классов в массиве body_class
  6. Удаление определенных классов из массива body_class
  7. Использование хука body_class для добавления классов в зависимости от условий
  8. Вопросы и ответы
  9. Как добавить дополнительные классы к body с помощью хука body_class?
  10. Как удалить определенный класс из списка классов body?
  11. Как изменить порядок классов body?
  12. Как добавить классы body в зависимости от типа поста или страницы?
  13. Как добавить классы body на определенных страницах или постах?
  14. Как изменить классы body для определенного типа поста?
  15. Как добавить классы body на основе пользовательских условий?
  16. Как использовать хук body_class для добавления классов в head?
  17. Как использовать хук body_class для добавления классов в footer?
  18. Связанные элементы

Описание хука

Хук «body_class» позволяет определить список CSS классов для тега body текущего поста или страницы. Он позволяет добавить или изменить классы, которые будут применяться к тегу body в зависимости от условий или настроек.

Использование

apply_filters( 'body_class', $classes, $css_class );

Функция apply_filters позволяет применить фильтр «body_class» к массиву классов $classes и массиву дополнительных классов $css_class. В результате применения фильтра будет возвращен измененный массив классов.

  • $classes (string[]) — Массив исходных классов для тега body.
  • $css_class (string[]) — Массив дополнительных классов, которые нужно добавить к тегу body.
<?php
/**
 * Пример использования хука "body_class"
 *
 * @param string[] $classes    Массив исходных классов для тега body.
 * @param string[] $css_class  Массив дополнительных классов для тега body.
 * @return string[]            Измененный массив классов для тега body.
 */
function custom_body_class( $classes, $css_class ) {
    // Добавляем новый класс к массиву классов
    $classes[] = 'custom-class';
    // Удаляем класс из массива классов
    if ( ( $key = array_search( 'old-class', $classes ) ) !== false ) {
        unset( $classes[$key] );
    }
    // Добавляем дополнительные классы к массиву классов
    $classes = array_merge( $classes, $css_class );
    return $classes;
}
add_filter( 'body_class', 'custom_body_class', 10, 2 );

В данном примере мы создаем функцию «custom_body_class», которая принимает два параметра: массив исходных классов $classes и массив дополнительных классов $css_class. Внутри функции мы добавляем новый класс «custom-class» к массиву классов, удаляем класс «old-class» из массива классов, и добавляем дополнительные классы из массива $css_class. Затем мы возвращаем измененный массив классов.

Наконец, мы добавляем фильтр «body_class» с приоритетом 10 и 2 аргументами (количество параметров, которые принимает функция «custom_body_class»). Таким образом, при вызове хука «body_class» будет выполнена наша функция «custom_body_class», которая изменит массив классов для тега body.

Примеры использования

Применение фильтра body_class для изменения классов тела страницы


/**
 * Функция для изменения классов тела страницы с помощью хука body_class.
 *
 * @param array $classes Массив с классами тела страницы.
 * @return array Измененный массив с классами тела страницы.
 */
function custom_body_class( $classes ) {
    // Добавляем класс 'custom-class' к массиву классов тела страницы
    $classes[] = 'custom-class';
    // Возвращаем измененный массив классов
    return $classes;
}
add_filter( 'body_class', 'custom_body_class' );

Добавление дополнительных классов к телу страницы с помощью хука body_class


/**
 * Функция для добавления дополнительных классов к телу страницы с помощью хука body_class.
 *
 * @param array $classes Массив с классами тела страницы.
 * @param array $css_class Массив с дополнительными классами.
 * @return array Измененный массив с классами тела страницы.
 */
function add_additional_classes( $classes, $css_class ) {
    // Добавляем дополнительные классы к массиву классов тела страницы
    $classes = array_merge( $classes, $css_class );
    // Возвращаем измененный массив классов
    return $classes;
}
add_filter( 'body_class', 'add_additional_classes', 10, 2 );

Изменение порядка классов в массиве body_class


/**
 * Функция для изменения порядка классов в массиве body_class.
 *
 * @param array $classes Массив с классами тела страницы.
 * @return array Измененный массив с классами тела страницы.
 */
function change_class_order( $classes ) {
    // Перемещаем класс 'custom-class' в начало массива классов
    if ( ( $key = array_search( 'custom-class', $classes ) ) !== false ) {
        unset( $classes[$key] );
        array_unshift( $classes, 'custom-class' );
    }
    // Возвращаем измененный массив классов
    return $classes;
}
add_filter( 'body_class', 'change_class_order' );

Удаление определенных классов из массива body_class


/**
 * Функция для удаления определенных классов из массива body_class.
 *
 * @param array $classes Массив с классами тела страницы.
 * @return array Измененный массив с классами тела страницы.
 */
function remove_classes( $classes ) {
    // Удаляем классы 'class1' и 'class2' из массива классов
    $classes = array_diff( $classes, array( 'class1', 'class2' ) );
    // Возвращаем измененный массив классов
    return $classes;
}
add_filter( 'body_class', 'remove_classes' );

Использование хука body_class для добавления классов в зависимости от условий


/**
 * Функция для добавления классов в зависимости от условий с помощью хука body_class.
 *
 * @param array $classes Массив с классами тела страницы.
 * @return array Измененный массив с классами тела страницы.
 */
function add_classes_based_on_condition( $classes ) {
    // Добавляем класс 'class1' если условие выполняется
    if ( is_front_page() ) {
        $classes[] = 'class1';
    }
    // Добавляем класс 'class2' если другое условие выполняется
    if ( is_single() ) {
        $classes[] = 'class2';
    }
    // Возвращаем измененный массив классов
    return $classes;
}
add_filter( 'body_class', 'add_classes_based_on_condition' );

Вопросы и ответы

Как добавить дополнительные классы к body с помощью хука body_class?

Для добавления дополнительных классов к тегу body на страницах или записях в WordPress можно использовать хук body_class. Этот хук позволяет фильтровать список CSS классов body.

Чтобы добавить дополнительные классы, нужно создать функцию, которая будет принимать массив существующих классов и массив дополнительных классов, а затем вернуть обновленный массив классов.


function custom_body_class( $classes, $css_class ) {
    // Добавляем дополнительные классы
    $classes[] = 'custom-class';
    $classes[] = 'another-class';
    return $classes;
}
add_filter( 'body_class', 'custom_body_class', 10, 2 );

Как удалить определенный класс из списка классов body?

Если нужно удалить определенный класс из списка классов body, можно использовать хук body_class и создать функцию, которая будет фильтровать массив классов и удалять нужный класс.


function remove_body_class( $classes, $css_class ) {
    // Удаляем определенный класс
    $classes = array_diff( $classes, array( 'unwanted-class' ) );
    return $classes;
}
add_filter( 'body_class', 'remove_body_class', 10, 2 );

Как изменить порядок классов body?

Для изменения порядка классов body можно использовать хук body_class и создать функцию, которая будет переупорядочивать массив классов.


function reorder_body_class( $classes, $css_class ) {
    // Изменяем порядок классов
    $classes = array_reverse( $classes );
    return $classes;
}
add_filter( 'body_class', 'reorder_body_class', 10, 2 );

Как добавить классы body в зависимости от типа поста или страницы?

Для добавления классов body в зависимости от типа поста или страницы в WordPress можно использовать хук body_class. Этот хук фильтрует список CSS классов body для текущего поста или страницы.

Пример кода из документации WordPress:

// Функция-обработчик хука body_class
function wpdocs_add_custom_body_classes( $classes ) {
    if ( is_single() ) {
        $classes[] = 'single-post';
    } elseif ( is_page() ) {
        $classes[] = 'page';
    }
    return $classes;
}
add_filter( 'body_class', 'wpdocs_add_custom_body_classes' );

Как добавить классы body на определенных страницах или постах?

Для добавления классов body на определенных страницах или постах в WordPress также можно использовать хук body_class. В этом случае нужно проверить текущую страницу или пост и добавить соответствующий класс.

Пример кода из документации WordPress:

// Функция-обработчик хука body_class
function wpdocs_add_custom_body_classes( $classes ) {
    if ( is_page( 'about' ) ) {
        $classes[] = 'about-page';
    } elseif ( is_single( 'post' ) ) {
        $classes[] = 'single-post';
    }
    return $classes;
}
add_filter( 'body_class', 'wpdocs_add_custom_body_classes' );

Как изменить классы body для определенного типа поста?

Для изменения классов body для определенного типа поста в WordPress можно использовать хук body_class и проверить тип текущего поста.

Пример кода из документации WordPress:

// Функция-обработчик хука body_class
function wpdocs_add_custom_body_classes( $classes ) {
    if ( 'product' === get_post_type() ) {
        $classes[] = 'product-post';
    }
    return $classes;
}
add_filter( 'body_class', 'wpdocs_add_custom_body_classes' );

Как добавить классы body на основе пользовательских условий?

Хук body_class позволяет добавить классы к тегу body на основе пользовательских условий. Для этого необходимо использовать функцию add_filter и передать ей имя хука и функцию, которая будет обрабатывать этот хук.

// Добавление класса "custom-class" к body, если пользователь авторизован
function add_custom_class( $classes ) {
    if ( is_user_logged_in() ) {
        $classes[] = 'custom-class';
    }
    return $classes;
}
add_filter( 'body_class', 'add_custom_class' );

Как использовать хук body_class для добавления классов в head?

Хук body_class также можно использовать для добавления классов в тег head. Для этого необходимо использовать функцию add_filter и передать ей имя хука и функцию, которая будет обрабатывать этот хук.

// Добавление класса "custom-class" в тег head
function add_custom_class_to_head( $classes ) {
    $classes[] = 'custom-class';
    return $classes;
}
add_filter( 'body_class', 'add_custom_class_to_head' );

Как использовать хук body_class для добавления классов в footer?

Хук body_class также можно использовать для добавления классов в тег footer. Для этого необходимо использовать функцию add_filter и передать ей имя хука и функцию, которая будет обрабатывать этот хук.

// Добавление класса "custom-class" в тег footer
function add_custom_class_to_footer( $classes ) {
    $classes[] = 'custom-class';
    return $classes;
}
add_filter( 'body_class', 'add_custom_class_to_footer' );

Хук body_class позволяет добавлять классы к тегу body на основе пользовательских условий. Это полезно для добавления дополнительных стилей или функциональности к определенным страницам или разделам сайта. Используя функцию add_filter, можно легко добавить классы в head или footer. Этот хук является мощным инструментом для разработчиков WordPress, позволяющим гибко настраивать классы body в зависимости от различных условий.

Связанные элементы

  • Функция wp_body_open(): добавляет открывающий тег <body> и вызывает хук wp_body_open.
  • Функция get_body_class(): возвращает классы для тега <body> в виде строки.
  • Функция body_class(): выводит классы для тега <body>.
  • Функция post_class(): выводит классы для элемента <article> или <div> в цикле записей.
  • Функция comment_class(): выводит классы для элемента <li> комментария.
  • Функция wp_nav_menu(): выводит HTML-код для меню навигации.
  • Функция wp_page_menu(): выводит HTML-код для меню страниц.
  • Функция wp_list_pages(): выводит HTML-код для списка страниц.
  • Функция wp_list_categories(): выводит HTML-код для списка категорий.
Обсуждение