Вопрос или проблема
Я работаю над настройкой своей темы WordPress и хочу добавить определенные классы к тегу body в зависимости от типа страницы или пользовательских условий. Как я могу изменить тег body, чтобы включить пользовательские классы, используя функции WordPress? Нужно ли редактировать файл functions.php или есть встроенный фильтр для этого?
Для этого используйте фильтр body_class
, который позволяет вам изменять (добавлять или удалять) CSS-классы для тега body.
С помощью функции is_singular()
вы можете проверить текущий тип поста. Если вы хотите протестировать что-то другое, здесь вы найдете несколько полезных функций, называемых условными тегами.
Код должен быть размещен в файле functions.php
.
add_filter( 'body_class', 'body_custom_css', 10, 2 );
function custom_body_class( $classes, $css_class )
{
// Добавьте класс, если post_type равен "foo" ИЛИ "bar"
if ( is_singular( array( 'foo', 'bar' ) ) ) {
$classes[] = 'foobar-class';
}
return $classes;
}
Ответ или решение
Чтобы добавить кастомные классы к тегу <body>
в WordPress, вам нужно использовать фильтр body_class
, который позволяет изменять или добавлять CSS классы к этому тегу. Вам также понадобятся условные теги для определения типа страницы или других условий, которые вы хотите использовать.
Шаги для добавления пользовательских классов к тегу <body>
:
-
Откройте файл
functions.php
вашей темы. Вы можете сделать это через панель администратора WordPress, выбрав «Внешний вид» -> «Редактор тем» или через FTP. -
Добавьте следующий код в
functions.php
:
add_filter( 'body_class', 'custom_body_class' );
function custom_body_class( $classes ) {
// Условие для добавления класса, если тип записи - 'foo' или 'bar'
if ( is_singular( array( 'foo', 'bar' ) ) ) {
$classes[] = 'foobar-class'; // Добавляем собственный класс
}
// Пример добавления класса на главной странице
if ( is_home() ) {
$classes[] = 'home-class'; // Добавляем класс только для главной страницы
}
// Здесь вы можете добавлять другие условия.
return $classes; // Возвращаем измененный массив классов
}
Объяснение кода:
-
Функция
add_filter
— используется для регистрации нашего пользовательского фильтра. Мы указываем, что используемbody_class
и связываем его с нашей пользовательской функциейcustom_body_class
. -
Функция
custom_body_class
— это ваша функция, где вы добавляете условия. В примере мы используемis_singular()
для проверки, является ли текущий пост типом ‘foo’ или ‘bar’. Если это так, мы добавляем классfoobar-class
. -
Возврат массива классов — в конце функции мы возвращаем измененный массив классов, который будет использоваться для тега
<body>
.
Дополнительные условия:
Вы можете использовать и другие условные теги, такие как:
is_page()
— для проверки страниц.is_category()
— для категорий.is_tag()
— для меток.is_single()
— для одиночных записей.
Все эти функции помогут вам более точно определять, какие классы добавлять. Более подробную информацию о условных тегах можно найти в документации WordPress.
После внесения изменений не забудьте сохранить файл. Теперь у вас должны быть дополнительные классы в вашем <body>
теге, соответствующие заданным вами условиям.