it-roy-ru.com

Добавить класс на страницу сообщений

Я пытаюсь сделать что-то уникальное для страницы блога/постов, которой нет на первой странице. Прямо сейчас тег body выглядит следующим образом: <body <?php body_class() ?>>
Но при этом <body <?php body_class('blog') ?>> возвращает <body class="logged-in"> или только <body>, если я не вошел в систему.

Я пробовал:

<body <?php if ( is_home()) {
    echo 'class="blog"';
} else {
    body_class(); }?>>

Это вроде работает, но полностью заменяет "залогиненный" класс. Должен быть способ добавлять классы в тег body для страниц сообщений, верно?

1
Dominic Neo

В файле функций вашей темы используйте фильтр body_class для добавления новых классов:

function wpse_282694_body_class( $classes ) {
    if ( is_home() ) {
        $classes[] = 'blog';
    }

    return $classes;
}
add_filter( 'body_class', 'wpse_282694_body_class' );

Если архивы вашей категории, архивы тегов, архивы дат и результаты поиска также нуждаются в одинаковом оформлении, что довольно удобно, проверьте каждый из них следующим образом:

if ( is_home() || is_date() || is_tag() || is_category() || is_search() ) {}

Обратите внимание, что я не использовал is_archive(), потому что это также повлияет на любые пользовательские типы сообщений, которые вы можете использовать.

1
Jacob Peattie