wp_headersхук-фильтрWP 2.8.0

Позволяет изменить HTTP-заголовки перед их отправкой в браузер.

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

add_filter( 'wp_headers', 'wp_kama_headers_filter', 10, 2 );

/**
 * Function for `wp_headers` filter-hook.
 * 
 * @param string[] $headers Associative array of headers to be sent.
 * @param WP       $wp      Current WordPress environment instance.
 *
 * @return string[]
 */
function wp_kama_headers_filter( $headers, $wp ){

	// filter...
	return $headers;
}
$headers(string[])
Ассоциативный массив заголовков для отправки.
$wp(WP)
Текущий экземпляр класса WP{}.

Примеры

1

#1 Как выглядят заголовки которые проходят через фильтр

Добавим такой код в файл functions.php и зайдём на главную страницу сайта:

add_filter( 'wp_headers', 'wp_kama_headers_filter_test', 10, 2 )

function wp_kama_headers_filter_test( $headers, $wp ){
	error_log( print_r( $headers, true ) );

	return $headers;
}

В итоге в файле дебага увидим.

Авторизованный пользователь:

Array
(
	[Expires] => Wed, 11 Jan 1984 05:00:00 GMT
	[Cache-Control] => no-cache, must-revalidate, max-age=0
	[Last-Modified] => 
	[Content-Type] => text/html; charset=UTF-8
)

Гость:

Array
(
	[Content-Type] => text/html; charset=UTF-8
)
0

#2 Как запретить индексацию сайта во время разработки

Нередко разработчики показывают свои наработки на DEV версии сайта. Чтобы этот дубль сайта не индексировался, можно использовать этот код, чтобы сказать поисковым системам "не индексируйте меня":

if ( 'development' === wp_get_environment_type() ){

	add_filter( 'wp_headers', 'disable_indexing_site' );

	/**
	 * Запрещает индексировать сайт во время разработки.
	 */
	function disable_indexing_site( $headers ) {
		$headers['X-Robots-Tag'] = 'noindex, nofollow';

		return $headers;
	}

}

Смотрите также: Запрещаем поисковикам индексировать DEV версию сайта.

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

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

Где вызывается хук

WP::send_headers()
wp_headers
wp-includes/class-wp.php 558
$headers = apply_filters( 'wp_headers', $headers, $this );

Где используется хук в WordPress

wp-includes/class-wp-customize-manager.php 1917
add_filter( 'wp_headers', array( $this, 'filter_iframe_security_headers' ) );