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');

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Миша: Да, точно)

  • Владимир: и на третьей строке не хватает скобки ) закрывающей if :)

  • Миша: Добрый вечер! Рекомендую получить ID пользователя через функцию get_current_user_id().

  • Дмитрий: Миша, подскажите пожалуйста, я использую такой редирект, но он не срабатывает: add_action( 'template_redirect', funct...

  • Миша: Ну как не определена - это аргумент функции. Или я просто вас не до конца понимаю.