Статьи

Добавление к классу тела в WordPress

В этом коротком руководстве мы рассмотрим класс тела WordPress и то, как мы можем манипулировать им с помощью вызовов основного API.

В частности, мы рассмотрим добавление классов тела, удаление классов тела, условное добавление классов тела и некоторые варианты использования.

Класс body в WordPress — это класс или серия классов, которые применяются к элементу тела HTML. Это полезно для применения уникальных стилей к различным областям сайта WordPress, так как классы body могут быть добавлены условно.

WordPress содержит ряд классов тела по умолчанию, которые рассматриваются в этой статье .

Нам доступно несколько методов для добавления новых классов тела в WordPress. В этом уроке будет body_class добавлении класса тела в тему (обычно определяется в header.php ) с использованием функции body_class и о добавлении классов с помощью фильтра.

Это действительно простой способ добавить классы тела и особенно полезен, если вы создаете тему. Класс body обычно включается в тему с использованием следующего кода:

<body <?php body_class(); ?>>

Чтобы добавить к этому свой собственный класс, вы можете передать аргумент функции, например, так:

<body <?php body_class( 'my-class' ); ?>>

Это добавило бы класс тела my-class на каждую страницу вашего сайта WordPress.

Могут быть случаи, когда вы хотите добавить более одного класса тела. Это может быть достигнуто с помощью простого массива:

1
<body <?php body_class( array( «class-one», «class-two», «class-three» ) );

Это берет все классы в массиве и передает их функции body_class .

Вы также можете условно добавить класс тела. Это легко с некоторым простым PHP. В этом примере используется условный метод WooCommerce is_shop() :

<?php if ( is_shop() ) { body_class( 'is-woocommerce-shop' ); } else { body_class(); } ?>

Примечание: WooCommerce уже добавляет класс, основанный на этом, поэтому обратите внимание, что это просто пример.

То, что делает приведенный выше код, проверяет, что первая функция возвращает true, если это правда, тогда к классу тела добавлен is-woocommerce-shop ; в противном случае, если это не так, то отображается только класс тела по умолчанию.

Можно также использовать фильтр WordPress для добавления класса тела. Этот метод обеспечивает чистоту кода темы и особенно полезен, если вы хотите добавить класс тела из плагина. Этот код может быть либо в вашей теме functions.php либо в вашем плагине.

1
2
3
4
5
6
7
8
add_filter( ‘body_class’,’my_body_classes’ );
function my_body_classes( $classes ) {
 
    $classes[] = ‘class-name’;
     
    return $classes;
     
}

Это добавляет класс (или классы, в зависимости от вашей реализации) в массив и возвращает их.

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

1
2
3
4
5
6
7
8
9
add_filter( ‘body_class’,’my_body_classes’ );
function my_body_classes( $classes ) {
 
    $classes[] = ‘class-name’;
    $classes[] = ‘class-name-two’;
     
    return $classes;
     
}

Условия также могут быть использованы в фильтре. Взяв тот же пример, который мы использовали ранее, мы можем добиться того же эффекта:

01
02
03
04
05
06
07
08
09
10
11
12
13
add_filter( ‘body_class’,’my_body_classes’ );
function my_body_classes( $classes ) {
 
    if ( is_shop() ) {
     
        $classes[] = ‘class-name’;
        $classes[] = ‘class-name-two’;
         
    }
     
    return $classes;
     
}

По умолчанию WordPress добавляет класс тела для шаблона страницы, но если вы являетесь разработчиком внешнего интерфейса и у вас есть соглашения об именах для вашего CSS, вы можете изменить это.

Например, шаблон страницы с именем halfhalf может иметь класс тела page-template-page-halfhalf-php — не очень.

Итак, давайте добавим новый класс, используя фильтр и условный тег WordPress:

01
02
03
04
05
06
07
08
09
10
add_filter( ‘body_class’,’halfhalf_body_class’ );
function halfhalf_body_class( $classes ) {
 
    if ( is_page_template( ‘page-halfhalf.php’ ) ) {
        $classes[] = ‘halfhalf-page’;
    }
     
    return $classes;
     
}

Это добавит halfhalf-page класса halfhalf-page если шаблон page-halfhalf.php .

Маловероятно, что вы захотите удалить класс тела, так как вы не обязаны их использовать, и они очень мало добавляют к вашей разметке. Тем не менее, это можно сделать, используя тот же фильтр body_class .

01
02
03
04
05
06
07
08
09
10
add_filter( ‘body_class’, ‘adjust_body_class’ );
function adjust_body_class( $classes ) {
 
    foreach ( $classes as $key => $value ) {
        if ( $value == ‘woocommerce-page’ ) unset( $classes[ $key ] );
    }
     
    return $classes;
     
}

Кредит: этот код изменен из этой статьи .

В этом примере мы перебираем массив имен классов, woocommerce-page имя класса woocommerce-page если оно существует, и затем возвращаем классы минус те, которые были удалены.

В этом небольшом уроке мы рассмотрели два метода добавления в класс тела WordPress:

  1. Используя функцию body_class в теме,
  2. И с помощью фильтра.

Мы также рассмотрели добавление классов тела условно и удаление классов, если вам когда-нибудь понадобится это в дальнейшей разработке.