wp_is_serving_rest_request() │ WP 6.5.0

Проверяет, происходит ли запрос к REST API WordPress.

Функция проверяет константу REST_REQUEST. Она не определяет внутренние REST-запросы, которые выполняются во время обработки обычной страницы, например при предварительной загрузке данных.

Функция зависит от глобальной переменной 'REST_REQUEST'.

Функция будет работать только на событии parse_request или позже. До этого момента константа REST_REQUEST ещё не определена.

Используйте wp_is_rest_endpoint(), чтобы также определить внутренний запрос к REST API.

Хуков нет.

Возвращает

bool.

  • true - WordPress обслуживает отдельный запрос к REST API.
  • false - текущий запрос не является отдельным запросом к REST API.

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

wp_is_serving_rest_request();

Примеры

#1 Выполнить код только вне REST API

После определения типа запроса вызывается пользовательское событие kama_regular_request. При отдельном запросе к REST API событие не вызывается.

add_action( 'parse_request', 'kama_handle_regular_request', 10, 0 );

function kama_handle_regular_request() {
	if ( wp_is_serving_rest_request() ) {
		return;
	}

	do_action( 'kama_regular_request' );
}

#2 Оставить REST API доступным во время технических работ

Обычные запросы получат ошибку 503, а запросы к REST API продолжат работать.

add_action( 'parse_request', 'kama_enable_maintenance_mode', 10, 0 );

function kama_enable_maintenance_mode() {
	if ( wp_is_serving_rest_request() || current_user_can( 'manage_options' ) ) {
		return;
	}

	wp_die(
		'Сайт временно недоступен.',
		'Технические работы',
		[ 'response' => 503 ]
	);
}

Список изменений

С версии 6.5.0 Введена.

Код wp_is_serving_rest_request() WP 7.1.3

function wp_is_serving_rest_request() {
	return defined( 'REST_REQUEST' ) && REST_REQUEST;
}