status_header()
Устанавливает указанный статус в заголовок HTTP ответа сервера. Код состояния HTTP (200, 404 и т.д.).
Для всех страниц, WordPress устанавливает HTTP заголовки состояния автоматически: 200 - для существующих страниц, 404 - для несуществующих и т.д.
Чтобы перебить установленный заголовок, функцию нужно вызывать во время события wp
или позднее, например: template_redirect
, template_include
и т.д.
Функция используется при установке среды запроса WordPress в классе WP
перед событием wp
в методах: WP::send_headers()
и WP::handle_404()
Функцию нужно использовать до того, как на экран будет выведена какая бы то ни была информация. В противном случае вы получите PHP ошибку. По правилам PHP заголовки (headers) должны быть установлены до вывода контента.
Эта функция обертка для функции PHP header().
Хуки из функции
Возвращает
null
. Ничего не возвращает.
Использование
status_header( $header, $description );
- $header(число) (обязательный)
Код состояния HTTP. Смотрите подробное описание каждого статуса здесь.
Возможные коды состояния:
1xx: Informational (информационные):
100
— Continue (продолжай)101
— Switching Protocols (переключение протоколов)102
— Processing (идёт обработка)105
— Name Not Resolved (не удается преобразовать DNS-адрес сервера)
2xx: Success (успешно):
200
— OK (хорошо)201
— Created (создано)202
— Accepted (принято)203
— Non-Authoritative Information (информация не авторитетна)204
— No Content (нет содержимого)205
— Reset Content (сбросить содержимое)206
— Partial Content (частичное содержимое)207
— Multi-Status (многостатусный)226
— IM Used (использовано IM)
3xx: Redirection (перенаправление):
300
— Multiple Choices (множество выборов)301
— Moved Permanently (перемещено навсегда)302
— Moved Temporarily (перемещено временно)302
— Found (найдено)303
— See Other (смотреть другое)304
— Not Modified (не изменялось)305
— Use Proxy (использовать прокси)306
— зарезервировано (код использовался только в ранних спецификациях)307
— Temporary Redirect (временное перенаправление)
4xx: Client Error (ошибка клиента):
400
— Bad Request (плохой, негодный запрос)401
— Unauthorized (неавторизован)402
— Payment Required (необходима оплата)403
— Forbidden (запрещено)404
— Not Found (не найдено)405
— Method Not Allowed (метод не поддерживается)406
— Not Acceptable (неприемлемо)407
— Proxy Authentication Required (необходима аутентификация прокси)408
— Request Timeout (истекло время ожидания)409
— Conflict (конфликт)410
— Gone (удалён)411
— Length Required (необходима длина)412
— Precondition Failed (условие ложно)413
— Request Entity Too Large (размер запроса слишком велик)414
— Request-URI Too Large (запрашиваемый URI слишком длинный)415
— Unsupported Media Type (неподдерживаемый тип данных)416
— Requested Range Not Satisfiable (запрашиваемый диапазон не достижим)417
— Expectation Failed (ожидаемое неприемлемо)418
— I'm a teapot (я - чайник)422
— Unprocessable Entity (необрабатываемый экземпляр)423
— Locked (заблокировано)424
— Failed Dependency (невыполненная зависимость)425
— Unordered Collection (неупорядоченный набор)426
— Upgrade Required (необходимо обновление)428
— Precondition Required (необходимо предусловие)429
— Too Many Requests (слишком много запросов)431
— Request Header Fields Too Large (поля заголовка запроса слишком большие)434
— Requested host unavailable. (Запрашиваемый адрес недоступен)449
— Retry With (повторить с)451
— Unavailable For Legal Reasons (недоступно по юридическим причинам)456
— Unrecoverable Error (некорректируемая ошибка)499
— Используется Nginx, когда клиент закрывает соединение до получения ответа.
5xx: Server Error (ошибка сервера):
500
— Internal Server Error (внутренняя ошибка сервера)501
— Not Implemented (не реализовано)502
— Bad Gateway (плохой, ошибочный шлюз)503
— Service Unavailable (сервис недоступен)504
— Gateway Timeout (шлюз не отвечает)505
— HTTP Version Not Supported (версия HTTP не поддерживается)506
— Variant Also Negotiates (вариант тоже проводит согласование)507
— Insufficient Storage (переполнение хранилища)508
— Loop Detected (обнаружена петля)509
— Bandwidth Limit Exceeded (исчерпана пропускная ширина канала)510
— Not Extended (не расширено)511
— Network Authentication Required (требуется сетевая аутентификация)
- $description(строка)
- Описание для заголовка. C версии 4.4.
По умолчанию: ''
Примеры
#1 Закрыть весь сайт от индексации
Предположим, вы хотите изменить код статуса для всех страниц: вам нужно закрыть все страницы сайта от индексации.
Для этого добавьте этот код в functions.php:
add_action( 'wp', function(){ status_header( 503 ); } );
#2 Ставим статус 404 конкретному посту
Предположим нам нужно установить статус 404 для всех типов записей event
, в зависимости от состояния. Т.е. у нас есть событие, если оно не активно, то ему нужно присвоить статус 404 и вывести для него код станицы 404.
add_action( 'template_redirect', 'rr_404_my_event', 1 ); // this code prints a 404 page for an inactive event // and sets the status to 404 function rr_404_my_event() { global $post, $wp_query; if ( is_singular( 'event' ) && ! rr_event_should_be_available( $post->ID ) ) { // put a status $wp_query->set_404(); status_header(404); // output the 404.php file include( get_query_template( '404' ) ); exit; } }
функция rr_event_should_be_available() проверяет должен ли быть текущий пост доступен.
Заметки
- Смотрите: get_status_header_desc()
Список изменений
С версии 2.0.0 | Введена. |
С версии 4.4.0 | Added the $description parameter. |