Para resolver este problema, escribí una función personalizada simple basada en el supuesto de que si el URI que se solicita cae dentro de la URL de la API Rest del sitio de WordPress, entonces se deduce que es una solicitud de la API Rest.
Si se trata de un punto final válido o autenticado, no es para que esta función lo determine. La pregunta es esta: ¿es la URL una posible URL de Rest API?
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;
}
Si $_SERVER['REQUEST_URI']
no está correctamente poblado, esta función seguirá regresando false
, independientemente.
No hay una codificación rígida de la URL, por lo que si por alguna razón cambia su base de URL de API, esto se adaptará.
init
. También tenga en cuenta que las partes de la API pueden usarse internamente en solicitudes que no son solicitudes REST, por lo que se arriesga a romper algo si confía en esa detección.