Untuk mengatasi masalah ini, saya menulis fungsi kustom sederhana berdasarkan asumsi bahwa jika URI yang diminta berada di bawah URL API Rest situs WordPress, maka itu adalah permintaan API Rest.
Apakah itu titik akhir yang valid, atau dikonfirmasi, bukan untuk fungsi ini untuk menentukan. Pertanyaannya adalah ini: apakah URL tersebut merupakan URL potensial 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;
}
Jika Anda $_SERVER['REQUEST_URI']
tidak terisi dengan benar, fungsi ini akan tetap kembali false
, apa pun.
Tidak ada pengodean URL sehingga jika Anda karena suatu alasan mengubah basis URL API Anda, ini akan beradaptasi.
init
. Perhatikan juga bahwa bagian-bagian dari API dapat digunakan secara internal pada permintaan yang bukan permintaan REST, sehingga Anda berisiko melanggar sesuatu jika Anda mengandalkan deteksi itu.