Щоб вирішити цю проблему, я написав просту функцію користувача, засновану на припущенні, що якщо запитуваний URI потрапляє під URL-адресу API відпочинку WordPress, то випливає, що це запит 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-запитами, тому ви ризикуєте щось зламати, якщо ви покладаєтесь на це виявлення.