Я начинаю немного с REST API. Если я не полностью введен в заблуждение, init
ловушка действия также выполняется, когда это запрос API REST. Теперь я хочу выполнить только некоторый код, когда это не запрос REST API.
Поэтому я искал команду, как is_rest()
, чтобы сделать что-то вроде
<?php
if( ! is_rest() ) echo 'no-rest-request';
?>
Но я не мог найти что-то подобное. Есть ли is_rest()
там?
init
. Также обратите внимание, что части API могут использоваться для внутренних запросов, которые не являются запросами REST, поэтому вы рискуете что-то сломать, если полагаетесь на это обнаружение.Ответы:
Это хорошая точка зрения @Milo,
REST_REQUEST
константа определяется какtrue
,rest_api_loaded()
если if$GLOBALS['wp']->query_vars['rest_route']
не пусто.Он зацепил в
parse_request
через:но
parse_request
срабатывает позже, чемinit
- см., например, Кодекс здесь .Было предложение (Даниэль Bachhuber) в билетных # 34373 относительно
WP_Query::is_rest()
, но он был отложен / отменены.источник
Просто наткнулся на ту же проблему и написал простую функцию,
is_rest
которая позволяет проверить, является ли текущий запрос запросом API REST WP.Ссылки:
источник
Чтобы решить эту проблему, я написал простую пользовательскую функцию, основанную на предположении, что если запрашиваемый URI попадает под URL-адрес Rest API сайта WordPress, то из этого следует, что это запрос Rest API.
Является ли это действительной конечной точкой или аутентифицированной, не для этой функции, чтобы определить. Вопрос в следующем: является ли URL потенциальным URL API отдыха?
Если ваш номер
$_SERVER['REQUEST_URI']
заполнен неправильно, эта функция все равно вернетсяfalse
.Нет жесткого кодирования URL, поэтому если вы по какой-то причине измените свою базу URL API, это будет адаптировано.
источник
Может быть не правильно, но я в конечном итоге
Не стесняйтесь, дайте мне знать, если это не так. Попытка сделать полезный стартовый плагин, чтобы в конечном итоге поделиться: https://gitlab.com/ripp.io/wordpress/plugin-starter
источник
Два варианта здесь действительно,
REST_REQUEST
определено ли.rest_api_init
куда ты хотел зацепитьсяinit
.источник
Вот что я придумал:
Однако у меня не было много времени, чтобы заставить CLI обнаруживать REST-запросы до того, как сработало
parse_request
действие. Я открыт для предложений!Я еще не написал несколько тестов для этой функции, я обновлю этот ответ, как только сделаю.
-- Редактировать
Только что нашел, как WooCommerce справляется с этим. WooCommerce не учитывает постоянные ссылки:
источник