- Описание хука
- Примеры использования
- Применение фильтра body_class для изменения классов тела страницы
- Добавление дополнительных классов к телу страницы с помощью хука body_class
- Изменение порядка классов в массиве body_class
- Удаление определенных классов из массива body_class
- Использование хука body_class для добавления классов в зависимости от условий
- Вопросы и ответы
- Как добавить дополнительные классы к body с помощью хука body_class?
- Как удалить определенный класс из списка классов body?
- Как изменить порядок классов body?
- Как добавить классы body в зависимости от типа поста или страницы?
- Как добавить классы body на определенных страницах или постах?
- Как изменить классы body для определенного типа поста?
- Как добавить классы body на основе пользовательских условий?
- Как использовать хук body_class для добавления классов в head?
- Как использовать хук body_class для добавления классов в footer?
- Связанные элементы
Описание хука
Хук «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-код для списка категорий.