Далеко ходить не буду и приведу пример прямо с моего сайта — если вы перейдёте на страницу Блог или в какую-нибудь категорию блога, вы увидите сайдбар, а если перейдёте в пост, то там его уже не будет. Пример довольно примитивный, но вся суть заключается в том, что при помощи этой функции к разным страницам сайта вы сможете применить разные стили CSS.
Практически для каждой страницы функция выведет уникальный набор CSS-классов.
Также вы сможете применить разные стили для залогиненных и незалогиненных пользователей, порой это может быть очень удобно.
body_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() |
|
is_attachment() | attachment |
is_404() | error404 |
is_single() | single postid-{ID поста}
|
is_archive() | archive
|
is_page() | page page-id-{ID страницы}
|
is_user_logged_in() | logged-in |
is_admin_bar_showing() | admin-bar no-customize-support |
Если используется произвольный фон. | custom-background |
is_paged() | paged paged-{номер страницы}
|
При помощи этого фильтра вы можете подловить итоговый массив с классами и сделать в нем некоторые изменения.
return apply_filters( 'body_class', $classes, $class );
В качестве примера давайте добавим еще один класс к общему списку, используя фильтр:
function true_body_class( $classes ) { $classes[] = 'true-class'; return $classes; } add_filter('body_class','true_body_class');
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.