corasao
@corasao
Начинающий web разработчик

Как добавить дополнительный класс хедеру на определенных страницах?

Всем привет!
Ситуация следующая.

Есть хедер в файле header.php
Вызываю его <?php get_header(); ?>

Но на некоторых страницах мне нужно получить этот же хедер с изменением цвета в стилях, которые определяет дополнительный класс

Как вариант создать файл header-black.php
куда поместить код хедера
И на нужных страницах вызывать его с помощью <?php get_header('black'); ?>

Возможно есть какой-то более правильный способ добавить класс хедеру на определенных страницах?
Чтобы не создавать дополнительный header-black.php ради дополнительного класса, который определяет одну строчку CSS кода.
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ответы на вопрос 2
mahmudchon
@mahmudchon
<?php
$class = '';
if ( 'определенная страница' == true ) {
    $class = ' header_black';
}
?>

<div class="header<?= $class ?>">
    <!-- содержимое -->
</div>

<style>
.header_black {
    background: #000;
}
</style>
Ответ написан
Комментировать
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Посмотрите как работают функции 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>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы