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?
function isRestUrl() {
$bIsRest = false;
if ( function_exists( 'rest_url' ) && !empty( $_SERVER[ 'REQUEST_URI' ] ) ) {
$sRestUrlBase = get_rest_url( get_current_blog_id(), '/' );
$sRestPath = trim( parse_url( $sRestUrlBase, PHP_URL_PATH ), '/' );
$sRequestPath = trim( $_SERVER[ 'REQUEST_URI' ], '/' );
$bIsRest = ( strpos( $sRequestPath, $sRestPath ) === 0 );
}
return $bIsRest;
}
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.
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.