Wie greife ich auf den Hauptteil einer WP-API-Anfrage in einer benutzerdefinierten Route zu?

Ich habe eine benutzerdefinierte Route in WP API (v2 beta 4) erstellt, um eine Site-Option festzulegen. Ich benutze AngularJS, um den API-Aufruf auszuführen, und aus irgendeinem Grund kann ich nicht auf die Daten zugreifen, die in der Anfrage gesendet wurden. Hier ist, was ich bisher habe:

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 } }) } }]); 

Dies sendet die Anfrage erfolgreich und die gebuchten Daten sehen in etwa so aus:

 {"option":"siteColor","value":"ff0000"} 

Die Anfrage wurde erfolgreich an meine benutzerdefinierte Route und den von mir angegebenen callback weitergeleitet. Hier ist diese Callback-function innerhalb der class:

 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 ) ); } } 

Das Problem ist, dass dies immer fehlschlägt und den WP_Error zurückgibt, weil $ request [‘option’] null ist.

Wenn ich var_dump ($ request), sehe ich die JSON-Zeichenfolge im [‘body’] Teil des Objekts, aber ich werde nicht darauf zugreifen, wenn ich diesen Teil des Arrays anrufe. Ich habe auch versucht, die Methoden zum Abrufen von Parametern zu verwenden, die in der Dokumentation ( http://v2.wp-api.org/extending/adding/ ) aufgeführt sind, aber keines von denen scheint die Daten auch nicht zurückzugeben. Fehle ich etwas wirklich Grundlegendes hier?

Solutions Collecting From Web of "Wie greife ich auf den Hauptteil einer WP-API-Anfrage in einer benutzerdefinierten Route zu?"

In einer vorherigen Antwort war es möglich, mit einem benutzerdefinierten Endpunkt auf die Daten zuzugreifen

 $parameters = $request->get_query_params(); 

Überprüfen Sie die Abfrageparameter auf option

 $parameters['option'] 

 < ?php function my_awesome_func( WP_REST_Request $request ) { // You can access parameters via direct array access on the object: $param = $request['some_param']; // Or via the helper method: $param = $request->get_param( 'some_param' ); // You can get the combined, merged set of parameters: $parameters = $request->get_params(); // The individual sets of parameters are also available, if needed: $parameters = $request->get_url_params(); $parameters = $request->get_query_params(); $parameters = $request->get_body_params(); $parameters = $request->get_default_params(); // Uploads aren't merged in, but can be accessed separately: $parameters = $request->get_file_params(); } 

Sie können $request->get_body()