Функция status_header() в WordPress: установка HTTP-статуса страницы.

STATUS_HEADER() │ WP 2.0.0

Функция для установки заголовка состояния HTTP.

Использование функции

Синтаксис

status_header( $code, $description );

Параметры:

  • $code (int) (обязательный) — код состояния HTTP.
  • $description (string) — пользовательское описание для кода состояния HTTP. По умолчанию значение берется из функции get_status_header_desc() для данного кода.

Возвращаемое значение

Ничего (null).

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

Пример 1: Закрытие всех страниц от индексации

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

Добавьте следующий код в файл functions.php вашей темы:

add_action( 'wp', function(){
    status_header( 503 ); 
} );

Пример 2: Установка статуса 404 для конкретного поста

Допустим, мы хотим установить статус 404 для всех типов постов "мероприятие", в зависимости от их статуса. Если мероприятие не активно, следует показать страницу 404.

Добавьте этот код в ваш файл functions.php:

add_action( 'template_redirect', 'rr_404_my_event', 1 );

// Этот код выводит страницу 404 для неактивного мероприятия
// и устанавливает статус 404
function rr_404_my_event() {
    global $post, $wp_query;

    if ( is_singular( 'event' ) && ! rr_event_should_be_available( $post->ID ) ) {
        // Установка статуса
        $wp_query->set_404();
        status_header(404);

        // Вывод файла 404.php
        include( get_query_template( '404' ) );

        exit;
    }
}

Функция rr_event_should_be_available() проверяет, должно ли текущее событие быть доступным.

Заметки

  • Для получения описания заголовка состояния обратитесь к функции get_status_header_desc().

Обновления функции

  • С 2.0.0 — Введена функция.
  • С 4.4.0 — Добавлен параметр $description.

Код функции STATUS_HEADER()

В WordPress функция определена в файле wp-includes/functions.php:

function status_header( $code, $description = '' ) {
    if ( ! $description ) {
        $description = get_status_header_desc( $code );
    }

    if ( empty( $description ) ) {
        return;
    }

    $protocol      = wp_get_server_protocol();
    $status_header = "$protocol $code $description";
    if ( function_exists( 'apply_filters' ) ) {
        /**
         * Фильтрует заголовок состояния HTTP.
         *
         * @since 2.2.0
         *
         * @param string $status_header Заголовок состояния HTTP.
         * @param int    $code          Код состояния HTTP.
         * @param string $description   Описание для кода состояния.
         * @param string $protocol      Протокол сервера.
         */
        $status_header = apply_filters( 'status_header', $status_header, $code, $description, $protocol );
    }

    if ( ! headers_sent() ) {
        header( $status_header, true, $code );
    }
}

Похожие функции

  • HTTP API (CURL REMOTE)
    • wp_get_http_headers()
    • wp_http_validate_url()
    • wp_remote_get()
    • wp_remote_head()
    • wp_remote_post()
    • wp_remote_request()
    • wp_remote_retrieve_body()
    • wp_remote_retrieve_cookie()
    • wp_remote_retrieve_cookie_value()
    • wp_remote_retrieve_cookies()
    • wp_remote_retrieve_header()
    • wp_remote_retrieve_headers()
    • wp_remote_retrieve_response_code()
    • wp_remote_retrieve_response_message()
    • wp_safe_remote_request()

Эта статья поможет вам понять, как использовать функцию status_header() для управления статусами страниц на вашем сайте WordPress.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *