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.