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