Estou começando um pouco com a API REST. Se eu não sou completamente enganado, o init
gancho de ação também é executado quando é uma solicitação da API REST. Agora, desejo executar apenas um código, quando não for uma solicitação da API REST.
Então, eu estava procurando por um comando como is_rest()
para fazer algo como
<?php
if( ! is_rest() ) echo 'no-rest-request';
?>
Mas não consegui encontrar algo assim. Existe um is_rest()
lá fora?
init
. Observe também que as partes da API podem ser usadas internamente em solicitações que não são solicitações REST; portanto, você corre o risco de quebrar algo se confiar nessa detecção.Respostas:
É um bom argumento do @Milo, a
REST_REQUEST
constante é definida comotrue
, dentro derest_api_loaded()
se$GLOBALS['wp']->query_vars['rest_route']
não estiver vazia.Está ligado à
parse_request
via:mas é
parse_request
acionado depois deinit
- Veja, por exemplo, o Codex aqui .Houve uma sugestão (por Daniel Bachhuber) em ticket # 34373 respeito
WP_Query::is_rest()
, mas foi adiado / cancelada.fonte
Apenas tropeçou no mesmo problema e escreveu uma função simples
is_rest
que permite verificar se a solicitação atual é uma solicitação da API WP REST.Referências:
fonte
Para resolver esse problema, escrevi uma função personalizada simples com base no pressuposto de que, se o URI sendo solicitado se enquadra na URL da API Rest do site WordPress, segue-se que é uma solicitação da API Rest.
Se é um ponto de extremidade válido ou autenticado, não é para esta função determinar. A questão é a seguinte: o URL é um URL potencial da API Rest?
Se você
$_SERVER['REQUEST_URI']
não estiver preenchido corretamente, essa função ainda retornaráfalse
, independentemente.Não há codificação codificada do URL. Se, por algum motivo, você alterar sua base de URL da API, isso será adaptado.
fonte
Talvez não esteja certo, mas acabei com
Sinta-se à vontade para me informar se isso não estiver certo. Tentando criar um iniciador de plug-in útil para eventualmente compartilhar: https://gitlab.com/ripp.io/wordpress/plugin-starter
fonte
Duas opções aqui realmente,
REST_REQUEST
está definido.rest_api_init
local em que deseja conectarinit
.fonte
Aqui está o que eu vim com:
No
parse_request
entanto, não tive muito tempo para fazer com que a CLI detecte solicitações REST antes que a ação seja acionada. Estou aberto a sugestões!Ainda estou para escrever alguns testes sobre esse recurso, atualizarei esta resposta assim que o fizer.
- Editar
Acabei de descobrir como o WooCommerce lida com isso. O WooCommerce parece não dar conta de permalinks simples:
fonte