body_class() — выводит атрибут класс и его содержимое для <body> страницы
Далеко ходить не буду и приведу пример прямо с моего сайта — если вы перейдёте на страницу Блог или в какую-нибудь категорию блога, вы увидите сайдбар, а если перейдёте в пост, то там его уже не будет. Пример довольно примитивный, но вся суть заключается в том, что при помощи этой функции к разным страницам сайта вы сможете применить разные стили CSS.
Практически для каждой страницы функция выведет уникальный набор CSS-классов.
Также вы сможете применить разные стили для залогиненных и незалогиненных пользователей, порой это может быть очень удобно.
body_class( $class = '' )
- $class
- (строка|массив) Классы, которые вы также хотите добавить к общему списку классов. Либо в виде массива, либо в виде строки через пробел.
Простой пример:
<body <?php body_class( 'myclass yourclass' ); ?>>
То есть функция выводит HTML-атрибут класс и его содержимое, например: class="page page-id-2 page-parent page-template-default logged-in myclass yourclass"
. Если вам не нужно всё это так выводить, используйте get_body_class(), которая возвращает те же самые классы в виде массива. Кстати говоря, body_class()
как раз-таки и работает на её основе.
Список присваиваемых классов
Для присвоения классов функция в основном использует условные теги, в следующей таблице будут показаны соответствия между условными тегами и присваиваемыми классами. Подробное описание тега вы можете посмотреть, кликнув по его названию.
Условие |
Добавляемые классы |
is_rtl() |
rtl |
is_front_page() |
home |
is_home() |
blog |
is_search() |
- Есть результаты поиска:
search search-results .
- Ничего не найдено:
search search-no-results .
|
is_attachment() |
attachment |
is_404() |
error404 |
is_single() |
single postid-{ID поста}
- Страница записи:
single-post
- Страница типа поста:
single-{тип поста}
- Форматы постов (если поддерживаются):
- Формат присвоен:
single-format-{формат}
- Не присвоен:
single-format-standard
- Страницы вложений:
attachment single-attachment attachmentid-{ID} attachment-mime-type
|
is_archive() |
archive
- Архивы по дате:
date
- Архив типа постов:
post-type-archive post-type-archive-{тип поста}
- Архив постов автора:
archive author author-{имя пользователя}
- Рубрики:
archive category category-{ярлык категории}
- Метки:
archive tag tag-{ярлык метки}
- Таксономии:
tax-{таксономии} term-{ярлык элемента} term-{ID}
- Архивы форматов постов:
tax-post_format term-post-format-{формат} term-{ID}
|
is_page() |
page page-id-{ID страницы}
- Родительская страница:
page-parent
- Дочерняя страница:
page-child parent-pageid-{ID}
- Для шаблонов страниц:
page-template page-template-{директория}{имя файла}-php , если шаблон не присвоен page-template-default .
|
is_user_logged_in() |
logged-in |
is_admin_bar_showing() |
admin-bar no-customize-support |
Если используется произвольный фон. |
custom-background |
is_paged() |
paged paged-{номер страницы}
- Записи:
single-paged-{номер страницы}
- Страницы:
page-paged-{номер страницы}
- Рубрики:
category-paged-{номер страницы}
- Метки:
tag-paged-{номер страницы}
- Архивы по дате:
date-paged-{номер страницы}
- Архивы по автору:
author-paged-{номер страницы}
- Результаты поиска:
search-paged-{номер страницы}
- Архивы произвольного типа постов:
post-type-paged-{номер страницы}
|
Фильтр body_class
При помощи этого фильтра вы можете подловить итоговый массив с классами и сделать в нем некоторые изменения.
return apply_filters( 'body_class', $classes, $class );
- $classes
- (массив) Массив классов, подготовленный для текущей страницы.
- $class
- (строка) Список классов через запятую, указанных в параметре функции.
В качестве примера давайте добавим еще один класс к общему списку, используя фильтр:
function true_body_class( $classes ) {
$classes[] = 'true-class';
return $classes;
}
add_filter('body_class','true_body_class');

Миша
Недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.
Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.
Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.