Что такое add_filter( 'body_class', ... )?
Это фильтр WordPress, который позволяет изменять список CSS-классов, применяемых к тегу <body> на любой странице сайта.
🔸 Функция, которую ты передаёшь, должна возвращать массив классов, в который ты можешь добавить, изменить или удалить элементы.
🔧 Пример базовой функции:
function my_custom_body_class( $classes ) {
$classes[] = 'my-extra-class'; // добавляем свой класс
return $classes;
}
add_filter( 'body_class', 'my_custom_body_class' );
На выходе HTML будет:
<body class="page page-id-7 my-extra-class">
🔹 Практический пример — добавить класс, если это страница товара WooCommerce и нет цены:
add_filter( 'body_class', 'add_body_class_if_no_price' );
function add_body_class_if_no_price( $classes ) {
if ( is_product() ) {
global $product;
if ( ! is_a( $product, 'WC_Product' ) ) {
$product = wc_get_product( get_the_ID() );
}
if ( $product && $product->get_price() === '' ) {
$classes[] = 'no-price';
}
}
return $classes;
}
🔍 Объяснение:
is_product()— проверяем, что это сингл-страница товара WooCommerce.$product->get_price() === ''— проверяем, что цена не задана.- Добавляем класс
no-priceв массив.