检查请求是否是API请求的最佳方法是什么?
请注意,请求可能是自定义API请求,这意味着它可能如下所示:
mysite.com/wp-json/my_namespace/my_version/my_action
显然,我可以检查一下API是否路由wp-json,但是应该有一个内置函数来检查它。
我需要它来做一些钩子,比如
add_action('init', 'do_something_only_if_api_request');
function do_something_only_if_api_request()
{
if ( ! wp_api_request() ) {
return;
}
// do stuff
}
答案 0 :(得分:1)
截至2016年12月,REST API文档对于看起来不像端点的所有内容都非常糟糕。
但是,存在一些功能,您可以在文档中找到正确记录的文档,请参阅:<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
<item
android:id="@+id/procura"
android:title="@string/app_hint"
android:icon="@mipmap/ic_search_black_24dp"
app:showAsAction="ifRoom|collapseActionView"
app:actionViewClass="android.support.v7.widget.SearchView"/>
如果您只想在REST API调用上添加操作,那么您可能想要挂钩操作:wordpress/wp-includes/rest-api.php
,它看起来像:
rest_api_init
您可以在PHPdoc评论中找到详细信息:
add_action('rest_api_init', 'do_something_only_if_api_request');
function do_something_only_if_api_request($wp_rest_server)
{
// do stuff
}
答案 1 :(得分:1)
您可以选中defined('REST_REQUEST')
。此常量在true
中定义为rest_api_loaded()
(否则未定义)。
有discussion of WP Rest API developers关于引入诸如is_rest_request()
之类的新功能的。最后,他们追求了这个常数。