Посмотрите как работают функции WordPress
body_class()
и
post_class()
. По аналогии вы можете создать свою функцию
header_class()
с нужными вам условиями, пример:
if ( ! function_exists( 'get_header_class' ) ) {
/**
* Get classes for header container.
*
* @param string $class Additional header classes.
*
* @return array
*/
function get_header_class( $class = '' ) {
// Add elements to array.
$classes = array();
$classes[] = 'header';
if ( has_custom_header() ) {
$classes[] = 'header_background-image';
}
if ( is_admin_bar_showing() ) {
$classes[] = 'is_wpadminbar';
}
if ( is_category( 'example' ) ) {
$classes[] = 'header_example';
}
// Check the function has accepted any classes.
if ( isset( $class ) && ! empty( $class ) ) {
if ( is_array( $class ) ) {
$classes = array_merge( $classes, $class );
} elseif ( is_string( $class ) ) {
$classes = array_merge( $classes, explode( ' ', $class ) );
}
}
$classes = apply_filters( 'get_header_class', $classes );
$classes = array_unique( (array) $classes );
return $classes;
}
}
if ( ! function_exists( 'header_class' ) ) {
/**
* Display classes for header container.
*
* @param string $class Additional header classes.
* @param bool $echo Echo or return header classes.
*
* @return string|void
*/
function header_class( $class = '', $echo = true ) {
$classes = get_header_class( $class );
if ( $echo ) {
echo 'class="' . esc_attr( implode( ' ', $classes ) ) . '"';
} else {
return 'class="' . esc_attr( implode( ' ', $classes ) ) . '"';
}
}
}
Использование:
<header id="header" <?php header_class(); ?> aria-label="<?php _ex( 'Site header', 'aria-label', 'themename' ); ?>">
<!-- ... -->
</header>