Чтобы решить эту проблему, я написал простую пользовательскую функцию, основанную на предположении, что если запрашиваемый URI попадает под URL-адрес Rest API сайта WordPress, то из этого следует, что это запрос Rest API.
Является ли это действительной конечной точкой или аутентифицированной, не для этой функции, чтобы определить. Вопрос в следующем: является ли URL потенциальным URL 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;
}
Если ваш номер $_SERVER['REQUEST_URI']
заполнен неправильно, эта функция все равно вернется false
.
Нет жесткого кодирования URL, поэтому если вы по какой-то причине измените свою базу URL API, это будет адаптировано.
init
. Также обратите внимание, что части API могут использоваться для внутренних запросов, которые не являются запросами REST, поэтому вы рискуете что-то сломать, если полагаетесь на это обнаружение.