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().
get_status_header_desc()
Хуки з функції
Повертає
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
(рядок) - Опис для заголовка. З версії 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);
// Цей код Prints 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. |