status_header

Позволяет изменить HTTP-заголовок статуса
Хук WordPress
INT 2.2.0
WordPress Icon
Содержание
  1. Описание хука
  2. Примеры использования
  3. Изменение HTTP статуса в хуке status_header
  4. Установка описания для HTTP статуса в хуке status_header
  5. Изменение протокола сервера в хуке status_header
  6. Добавление дополнительных заголовков в хуке status_header
  7. Установка пользовательского HTTP статуса в хуке status_header
  8. Вопросы и ответы
  9. Как изменить HTTP статусный заголовок с помощью хука status_header?
  10. Как добавить дополнительные HTTP статусные заголовки с помощью хука status_header?
  11. Как удалить HTTP статусный заголовок с помощью хука status_header?
  12. Как изменить описание для HTTP статусного кода с помощью хука status_header?
  13. Как изменить серверный протокол для HTTP статусного заголовка с помощью хука status_header?
  14. Как использовать хук status_header для перенаправления страницы?
  15. Как использовать хук status_header для кеширования страницы?
  16. Как использовать хук status_header для установки пользовательских HTTP статусных заголовков?
  17. Как использовать хук status_header для обработки ошибок на сайте?
  18. Связанные элементы

Описание хука

Хук «status_header» позволяет определить и изменить HTTP заголовок статуса.

HTTP заголовок статуса представляет собой часть HTTP ответа сервера, которая сообщает клиенту о статусе выполнения его запроса. Он состоит из трех частей: кода статуса, описания статуса и протокола сервера.

Хук «status_header» позволяет изменить эти три части HTTP заголовка статуса перед отправкой ответа клиенту. Это может быть полезно, например, для изменения кода статуса или описания статуса в зависимости от определенных условий или требований.

Использование

apply_filters( 'status_header', $status_header, $code, $description, $protocol );

Где:

  • $status_header (string) — HTTP заголовок статуса.
  • $code (int) — HTTP код статуса.
  • $description (string) — Описание статуса.
  • $protocol (string) — Протокол сервера.
<?php
/**
 * Изменение HTTP заголовка статуса.
 *
 * @param string $status_header   HTTP заголовок статуса.
 * @param int    $code            HTTP код статуса.
 * @param string $description     Описание статуса.
 * @param string $protocol        Протокол сервера.
 * @return string                 Измененный HTTP заголовок статуса.
 */
function custom_status_header( $status_header, $code, $description, $protocol ) {
    // Изменяем код статуса на 200.
    $code = 200;
    // Изменяем описание статуса.
    $description = 'OK';
    // Возвращаем измененный HTTP заголовок статуса.
    return $status_header;
}
add_filter( 'status_header', 'custom_status_header', 10, 4 );

В приведенном выше примере кода мы определяем функцию «custom_status_header», которая принимает четыре параметра: $status_header, $code, $description и $protocol. Внутри функции мы изменяем код статуса на 200 и описание статуса на «OK». Затем мы возвращаем измененный HTTP заголовок статуса.

Затем мы добавляем фильтр «status_header», который вызывает нашу функцию «custom_status_header» с приоритетом 10 и количеством параметров 4.

Примеры использования

Изменение HTTP статуса в хуке status_header


function change_status_header( $status_header, $code, $description, $protocol ) {
    // Изменяем HTTP статус на 404
    $status_header = 'HTTP/1.1 404 Not Found';
    return $status_header;
}
add_filter( 'status_header', 'change_status_header', 10, 4 );

В данном примере мы используем хук «status_header» для изменения HTTP статуса на 404 Not Found. Функция «change_status_header» принимает аргументы $status_header, $code, $description и $protocol, но мы не используем их в данном примере. Мы просто переопределяем значение $status_header на «HTTP/1.1 404 Not Found» и возвращаем его.

Установка описания для HTTP статуса в хуке status_header


function set_status_description( $status_header, $code, $description, $protocol ) {
    // Устанавливаем описание для HTTP статуса 200
    if ( $code == 200 ) {
        $description = 'OK';
    }
    return $status_header;
}
add_filter( 'status_header', 'set_status_description', 10, 4 );

В этом примере мы используем хук «status_header» для установки описания для HTTP статуса 200. Функция «set_status_description» принимает аргументы $status_header, $code, $description и $protocol. Мы проверяем, является ли $code равным 200, и если да, то устанавливаем $description в значение «OK». Затем мы возвращаем измененный $status_header.

Изменение протокола сервера в хуке status_header


function change_protocol( $status_header, $code, $description, $protocol ) {
    // Изменяем протокол сервера на HTTP/1.0
    $protocol = 'HTTP/1.0';
    return $status_header;
}
add_filter( 'status_header', 'change_protocol', 10, 4 );

В этом примере мы используем хук «status_header» для изменения протокола сервера на HTTP/1.0. Функция «change_protocol» принимает аргументы $status_header, $code, $description и $protocol. Мы просто переопределяем значение $protocol на «HTTP/1.0» и возвращаем $status_header.

Добавление дополнительных заголовков в хуке status_header


function add_custom_headers( $status_header, $code, $description, $protocol ) {
    // Добавляем дополнительные заголовки
    header( 'X-Custom-Header: Custom Value' );
    return $status_header;
}
add_filter( 'status_header', 'add_custom_headers', 10, 4 );

В данном примере мы используем хук «status_header» для добавления дополнительных заголовков. Функция «add_custom_headers» принимает аргументы $status_header, $code, $description и $protocol. Мы используем функцию header() для добавления заголовка «X-Custom-Header» со значением «Custom Value». Затем мы возвращаем $status_header без изменений.

Установка пользовательского HTTP статуса в хуке status_header


function set_custom_status( $status_header, $code, $description, $protocol ) {
    // Устанавливаем пользовательский HTTP статус
    $status_header = 'HTTP/1.1 418 I'm a teapot';
    return $status_header;
}
add_filter( 'status_header', 'set_custom_status', 10, 4 );

В этом примере мы используем хук «status_header» для установки пользовательского HTTP статуса. Функция «set_custom_status» принимает аргументы $status_header, $code, $description и $protocol. Мы переопределяем значение $status_header на «HTTP/1.1 418 I’m a teapot» и возвращаем его.

Вопросы и ответы

Как изменить HTTP статусный заголовок с помощью хука status_header?

Для изменения HTTP статусного заголовка с помощью хука status_header необходимо использовать функцию apply_filters().


function change_status_header( $status_header, $code, $description, $protocol ) {
    // Изменяем статусный заголовок
    $status_header = 'HTTP/1.1 200 OK';
    return $status_header;
}
add_filter( 'status_header', 'change_status_header', 10, 4 );

Как добавить дополнительные HTTP статусные заголовки с помощью хука status_header?

Для добавления дополнительных HTTP статусных заголовков с помощью хука status_header необходимо использовать функцию apply_filters().


function add_additional_headers( $status_header, $code, $description, $protocol ) {
    // Добавляем дополнительные заголовки
    header( 'X-Custom-Header: Custom Value' );
    header( 'X-Another-Header: Another Value' );
    return $status_header;
}
add_filter( 'status_header', 'add_additional_headers', 10, 4 );

Как удалить HTTP статусный заголовок с помощью хука status_header?

Для удаления HTTP статусного заголовка с помощью хука status_header необходимо использовать функцию apply_filters().


function remove_status_header( $status_header, $code, $description, $protocol ) {
    // Удаляем статусный заголовок
    $status_header = '';
    return $status_header;
}
add_filter( 'status_header', 'remove_status_header', 10, 4 );

Как изменить описание для HTTP статусного кода с помощью хука status_header?

Для изменения описания HTTP статусного кода с помощью хука status_header необходимо использовать функцию add_filter и указать название хука, а также функцию, которая будет обрабатывать данный хук.


function change_status_description( $status_header, $code, $description, $protocol ) {
    // Ваш код для изменения описания статусного кода
    return $status_header;
}
add_filter( 'status_header', 'change_status_description', 10, 4 );

Как изменить серверный протокол для HTTP статусного заголовка с помощью хука status_header?

Для изменения серверного протокола HTTP статусного заголовка с помощью хука status_header также необходимо использовать функцию add_filter и указать название хука, а также функцию, которая будет обрабатывать данный хук.


function change_protocol( $status_header, $code, $description, $protocol ) {
    // Ваш код для изменения серверного протокола
    return $status_header;
}
add_filter( 'status_header', 'change_protocol', 10, 4 );

Как использовать хук status_header для перенаправления страницы?

Хук status_header можно использовать для перенаправления страницы, изменяя HTTP статусный код на 301 или 302 и указывая новый URL в заголовке Location.


function redirect_page( $status_header, $code, $description, $protocol ) {
    if ( $code == 301 || $code == 302 ) {
        $new_url = 'https://example.com/new-page';
        header( 'Location: ' . $new_url );
        exit;
    }
    return $status_header;
}
add_filter( 'status_header', 'redirect_page', 10, 4 );

Как использовать хук status_header для кеширования страницы?

Хук status_header позволяет изменить HTTP статусный заголовок страницы, что может быть полезно для кеширования страницы и улучшения производительности сайта.

Пример использования хука status_header для установки заголовка «Cache-Control» и значения «public» для кеширования страницы:


function wpdocs_set_cache_header( $status_header, $code, $description, $protocol ) {
    if ( is_page() ) {
        $status_header .= 'Cache-Control: public';
    }
    return $status_header;
}
add_filter( 'status_header', 'wpdocs_set_cache_header', 10, 4 );

Как использовать хук status_header для установки пользовательских HTTP статусных заголовков?

Хук status_header также может быть использован для установки пользовательских HTTP статусных заголовков, что позволяет контролировать поведение сервера и взаимодействие с клиентом.

Пример использования хука status_header для установки заголовка «X-My-Header» и значения «My Custom Header» для всех страниц:


function wpdocs_set_custom_header( $status_header, $code, $description, $protocol ) {
    $status_header .= 'X-My-Header: My Custom Header';
    return $status_header;
}
add_filter( 'status_header', 'wpdocs_set_custom_header', 10, 4 );

Как использовать хук status_header для обработки ошибок на сайте?

Хук status_header может быть использован для обработки ошибок на сайте и вывода пользовательских страниц ошибок.

Пример использования хука status_header для перенаправления на страницу ошибки 404:


function wpdocs_redirect_to_custom_404( $status_header, $code, $description, $protocol ) {
    if ( 404 === $code ) {
        header( 'Location: /custom-404-page/' );
        exit;
    }
    return $status_header;
}
add_filter( 'status_header', 'wpdocs_redirect_to_custom_404', 10, 4 );

Хук status_header является мощным инструментом для управления HTTP статусными заголовками на сайте WordPress. Он позволяет кешировать страницы, устанавливать пользовательские заголовки и обрабатывать ошибки. Используйте этот хук для оптимизации производительности и улучшения пользовательского опыта на вашем сайте.

Связанные элементы

  • Функция wp_redirect(): осуществляет перенаправление на другую страницу.
  • Функция wp_send_json(): отправляет данные в формате JSON.
  • Функция wp_die(): выводит сообщение об ошибке и завершает выполнение скрипта.
  • Хук wp_headers: позволяет изменять заголовки HTTP перед отправкой.
  • Хук rest_pre_serve_request: вызывается перед обработкой REST API запроса.
  • Хук rest_authentication_errors: вызывается при возникновении ошибки аутентификации в REST API.
  • Класс WP_REST_Response: представляет ответ REST API и содержит методы для работы с ним.
  • Класс WP_REST_Server: обрабатывает запросы REST API.
Обсуждение