Если вам понадобилось по каким-то причинам модифицировать HTTP заголовки в WordPress админке, то сделать это довольно проблематично. Однако далее, я поделюсь секретом, как это можно обойти…
В WordPress есть wp_headers
фильтр и хук действия send_headers
для добавления и изменения HTTP- запросов. Для внешних страниц страниц сайта это идеальные «зацепки», которые следует использовать при любой возможности. К сожалению, однако, ни один хук не работает на всех страницах в области администрирования WordPress. После некоторых экспериментов я нашел простое решение для изменения заголовков HTTP на любой / всех страницах в административной области.
Добавить / изменить / удалить HTTP заголовки в административной области
Самый простой способ добавить или изменить заголовок для ЛЮБЫХ / ВСЕХ сгенерированных WP страниц, включая все страницы в административной области и внешнем интерфейсе WordPress, — это вызвать функцию PHP headers()
с помощью init
хука WP . Вот несколько основных примеров, показывающих, как это делается.
Примечание: примеры далее ограничивают изменение заголовка только страницами администратора. Чтобы изменить заголовки для запросов во внешней части сайта, рекомендуется использовать wp_headers
или send_headers
.
Добавляем заголовки
Чтобы добавить, скажем, XSS заголовок в административной области и во внешнем интерфейсе (т.е везде), мы можем добавить следующий код в файл functions.php.
function shapeSpace_add_header() { if (is_admin()) header('X-XSS-Protection: 0'); } add_action('init', 'shapeSpace_add_header');
Вот так просто. Этот метод использует функцию WordPress is_admin()
, чтобы проверить, есть ли запрос для какой-либо страницы в области администрирования WP . Если это так, XSS заголовок добавляется через headers()
функцию. Дополнительная условная логика может применяться для таргетинга только на определенные страницы.
Изменяем заголовки
По умолчанию headers()
функция заменяет любой существующий заголовок с тем же именем. Рассмотрим этот пример:
function shapeSpace_modify_header() { if (is_admin()) header('Example-Header: Value'); } add_action('init', 'shapeSpace_modify_header');
Если Example-Header заголовок уже существует, его значение будет заменено на Value. Таким образом, этот метод может быть использован для добавления нового заголовка (если он еще не существует) или для изменения заголовка (если он уже существует).
Добавляем несколько заголовков
Чтобы добавить несколько заголовков с одинаковым именем, мы можем передать второй аргумент headers()
функции следующим образом:
function shapeSpace_add_headers() { if (is_admin()) { header('Header-Example: Value 1', false); header('Header-Example: Value 2', false); header('Header-Example: Value 3', false); } } add_action('init', 'shapeSpace_add_headers');
Обратите внимание, что здесь мы передаем false в качестве аргумента параметр функции replace
. Таким образом, в этом примере будут добавлены три новых заголовка (и не будут заменены никакие заголовки), каждый со своим собственным значением. Кстати, для получения дополнительной информации можете ознакомиться с документацией по header()
функции.
Удаляем заголовки
Последний пример, если вы хотите удалить заголовок, используйте функцию header_remove()
:
function shapeSpace_remove_header() { if (is_admin()) header_remove('Header-Example'); } add_action('init', 'shapeSpace_remove_header');
Этот метод удалит любые заголовки Header-Example. Опять же, как и в предыдущих примерах, мы используем, is_admin()
чтобы убедиться, что затрагиваются только страницы админ панели.
Безопасность
В целях безопасности, изменяйте HTTP заголовки (особенно в области админки), только если вы на 100% знаете, что делаете. Если есть сомнения, не меняйте заголовки. Если вы работаете над внешними страницами, используйте основные хуки WordPress, wp_headers
и send_headers
, а не вышеописанную headers()
технику PHP.