is_header_video_active()WP 4.7.0

Проверяет нужно ли показать имеющееся видео заголовка на текущей странице. Условный тег.

С версии 4.7 появилась возможно устанавливать видео заголовка, в дополнении к картинке заголовка. Видео позволяет привлечь больше внимания и оставляет большее впечатление о сайте.

Эта функция отвечает за проверку на какой странице показывать такое видео. Такое видео по умолчанию показывается только на главной странице сайта см. is_front_page().

Функция вернет false если поддержка видео не включена, включается она так в functions.php темы:

get_theme_support( 'custom-header', array('video'=>true) );

Имейте ввиду, что эта функция не проверяет установлено ли видео заголовка, а проверят нужно ли его показывать. Чтобы проверить установлено ли видео заголовка используйте has_header_video()

Изменение проверки

Эта функция является оберткой для функции указанной в параметре video-active-callback, при регистрации поддержки add_theme_support('custom-header'). Допустим, при регистрации видео заголовка мы указали параметры так:

add_theme_support( 'custom-header', array(
	'video'                 => true,
	'video-active-callback' => 'is_home',
));

Тогда работа этой функции будет передаваться is_home() и то что вернет она вернет и эта функция.

Однако это поведение можно перебить через хук is_header_video_active. Через этот хук мы можем переопределить проверку и то что вернет эта функция. Например так:

add_filter( 'is_header_video_active', 'my_is_header_video_active' );
function my_is_header_video_active( $show_video ){
	// Разрешим показ видео заголовка только на странице 'about'
	if( is_page('about') )
		$show_video = true;
	else
		$show_video = false;

	return $show_video;
}

И теперь is_header_video_active() будет всегда возвращать true на странице /about и false на всех остальных страницах. И не важно что установлено в параметре video-active-callback.

Основа для: has_custom_header()
Хуки из функции

Возвращает

true|false. true - если видео должно показываться не текущей странице. false - в противном случае.

Использование

if( has_header_video() && is_header_video_active() ){
	// ...
}

Примеры

0

#1 Выведем видео заголовка

Проверим есть ли видео заголовка и должно ли оно выводиться на текущей странице. Если все ОК, то показываем плеер с проигрываемым видео.

## проверим есть ли видео заголовка и оно должно показываться на текущей странице.
if( has_header_video() && is_header_video_active() ){
	the_custom_header_markup();
	// url на видео - get_header_video_url()
}

В результате в месте этого кода появится HTML код видео плеера, и на страницу (в конце) будут подключены нужные для плеера скрипты:

<div id="wp-custom-header" class="wp-custom-header">
	<video id="wp-custom-header-video" autoplay="" loop="" width="954" height="1300" src="http://example.com/wp-content/uploads/2017/01/polina.mp4"></video>
	<button type="button" id="wp-custom-header-video-button" class="wp-custom-header-video-button wp-custom-header-video-play">Пауза</button>
</div>

Скрипты в подвале:

<script type='text/javascript' src='http://example.com/wp-includes/js/wp-custom-header.min.js'></script>

<script type='text/javascript' src='http://example.com/wp-includes/js/mediaelement/mediaelement-and-player.min.js'></script>

<script type='text/javascript' src='http://example.com/wp-includes/js/mediaelement/wp-mediaelement.min.js'></script>

Список изменений

С версии 4.7.0 Введена.

Код is_header_video_active() WP 6.4.3

function is_header_video_active() {
	if ( ! get_theme_support( 'custom-header', 'video' ) ) {
		return false;
	}

	$video_active_cb = get_theme_support( 'custom-header', 'video-active-callback' );

	if ( empty( $video_active_cb ) || ! is_callable( $video_active_cb ) ) {
		$show_video = true;
	} else {
		$show_video = call_user_func( $video_active_cb );
	}

	/**
	 * Filters whether the custom header video is eligible to show on the current page.
	 *
	 * @since 4.7.0
	 *
	 * @param bool $show_video Whether the custom header video should be shown. Returns the value
	 *                         of the theme setting for the `custom-header`'s `video-active-callback`.
	 *                         If no callback is set, the default value is that of `is_front_page()`.
	 */
	return apply_filters( 'is_header_video_active', $show_video );
}