检查请求是否是WP REST API请求?

时间:2016-12-12 12:47:18

标签: wordpress wp-api

检查请求是否是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
}

2 个答案:

答案 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()之类的新功能的。最后,他们追求了这个常数。