我已经在WP API(v2 beta 4)中创建了一个自定义路由来设置站点选项。我使用AngularJS进行API调用,由于某种原因,我无法访问请求中发送的数据。以下是我目前掌握的情况:
gvl.service(\'gvlOptionService\', [\'$http\', function($http) {
this.updateOption = function(option, value) {
return $http({
method : \'POST\',
url : wpAPIdata.gvlapi_base + \'options\',
data : { "option" : option,
"value" : value
},
headers : { \'Content-Type\': \'application/x-www-form-urlencoded\',
\'X-WP-Nonce\' : wpAPIdata.api_nonce
}
})
}
}]);
这将成功发送请求,发布的数据如下所示:
{"option":"siteColor","value":"ff0000"}
请求成功地发送到我的自定义路由和我指定的回调。下面是类中的回调函数:
public function update_option( WP_REST_Request $request ) {
if(isset($request[\'option\']) && $request[\'option\'] == \'siteColor\') {
$request_prepared = $this->prepare_item_for_database($request);
$color_updated = update_option(\'site_color\', $request_prepared[\'value\'], false);
if($color_updated) {
$response = $this->prepare_item_for_response(\'site_color\');
$response->set_status( 201 );
$response->header(\'Location\', rest_url(\'/gvl/v1/options\'));
return $response;
} else {
// ...
}
} else {
return new WP_Error( \'cant_update_option\', __( \'Cannot update option.\' ), array( \'status\' => 400 ) );
}
}
问题是,由于$request[\'option\']为空,此操作总是失败并返回WP\\u错误。
当我var\\u dump($request)时,我在对象的[\'body\']部分看到JSON字符串,但它不允许我在调用数组的该部分时访问该字符串。我还尝试使用文档中记录的检索参数的方法(http://v2.wp-api.org/extending/adding/), 但这些似乎都没有返回数据。我是不是错过了一些基本的东西?