Ho creato un percorso personalizzato nell'API WP (v2 beta 4) per impostare un'opzione del sito. Sto utilizzando AngularJS per effettuare la chiamata API e, per qualche motivo, non sono in grado di accedere ai dati inviati all'interno della richiesta. Ecco quello che ho finora:
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
}
})
}
}]);
Questo invia correttamente la richiesta e i dati pubblicati sono simili al seguente:
{"option":"siteColor","value":"ff0000"}
La richiesta arriva correttamente al mio percorso personalizzato e al callback che ho specificato. Ecco quella funzione di callback all'interno della classe:
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 ) );
}
}
Il problema è che ciò fallisce sempre e restituisce WP_Error perché $ request ['opzione'] è null.
Quando var_dump ($ request), vedo la stringa JSON nella parte ['body'] dell'oggetto, ma non mi consente di accedervi quando chiamo quella parte dell'array. Ho anche provato a utilizzare i metodi per recuperare i parametri indicati nella documentazione ( http://v2.wp-api.org/extending/adding/ ), ma nessuno di questi sembra restituire i dati. Mi sto perdendo qualcosa di veramente semplice qui?