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. |