Dopo aver ricercato con esperti in materia, programmatori di diverse branche e professori, abbiamo trovato la soluzione alla domanda e la condividiamo in questa pubblicazione.
Aggiorna i valori dei meta.
Parametri
- $meta
-
(array)(Richiesto)Array di meta analizzati dalla richiesta.
- $oggetto_id
-
(int)(Richiesto)ID dell'oggetto per cui recuperare i meta.
Ritorno
(null|WP_Error) Null in caso di successo, oggetto WP_Error in caso di fallimento.
Fonte
File: wp-includes/rest-api/fields/class-wp-rest-meta-fields.php
publicfunctionupdate_value($meta,$object_id){$fields=$this->get_registered_fields();foreach($fieldsas$meta_key=>$args){$name=$args['name'];if(!array_key_exists($name,$meta)){continue;}$value=$meta[$name];/* * A null value means reset the field, which is essentially deleting it * from the database and then relying on the default value. * * Non-single meta can also be removed by passing an empty array. */if(is_null($value)||(array()===$value&&!$args['single'])){$args=$this->get_registered_fields()[$meta_key];if($args['single']){$current=get_metadata($this->get_meta_type(),$object_id,$meta_key,true);if(is_wp_error(rest_validate_value_from_schema($current,$args['schema']))){returnnewWP_Error('rest_invalid_stored_value',/* translators: %s: Custom field key. */sprintf(__('The %s property has an invalid stored value, and cannot be updated to null.'),$name),array('status'=>500));}}$result=$this->delete_meta_value($object_id,$meta_key,$name);if(is_wp_error($result)){return$result;}continue;}if(!$args['single']&&is_array($value)&&count(array_filter($value,'is_null'))){returnnewWP_Error('rest_invalid_stored_value',/* translators: %s: Custom field key. */sprintf(__('The %s property has an invalid stored value, and cannot be updated to null.'),$name),array('status'=>500));}$is_valid=rest_validate_value_from_schema($value,$args['schema'],'meta.'$name);if(is_wp_error($is_valid)){$is_valid->add_data(array('status'=>400));return$is_valid;}$value=rest_sanitize_value_from_schema($value,$args['schema']);if($args['single']){$result=$this->update_meta_value($object_id,$meta_key,$name,$value);}else{$result=$this->update_multi_meta_value($object_id,$meta_key,$name,$value);}if(is_wp_error($result)){return$result;}}returnnull;}
Correlato
Utilizzi
Usi | Descrizione |
---|---|
wp-includes/rest-api.php: rest_sanitize_value_from_schema() |
Sanitizza un valore basato su uno schema. |
wp-includes/rest-api.php: rest_validate_value_from_schema() |
Convalida un valore basato su uno schema. |
wp-includes/rest-api/fields/class-wp-rest-meta-fields.php: WP_REST_Meta_Fields::get_registered_fields() |
Recupera tutti i meta-campi registrati. |
wp-includes/rest-api/fields/class-wp-rest-meta-fields.php: WP_REST_Meta_Fields::delete_meta_value() |
Cancella un valore meta per un oggetto. |
wp-includes/rest-api/fields/class-wp-rest-meta-fields.php: WP_REST_Meta_Fields::update_meta_value() |
Aggiorna un valore meta per un oggetto. |
wp-includes/rest-api/fields/class-wp-rest-meta-fields.php: WP_REST_Meta_Fields::update_multi_meta_value() |
Aggiorna più valori meta per un oggetto. |
wp-includes/rest-api/fields/class-wp-rest-meta-fields.php: WP_REST_Meta_Fields::get_meta_type() |
Recupera il meta-tipo dell'oggetto. |
wp-includes/l10n.php: __() |
Recupera la traduzione di $testo. |
wp-includes/meta.php: get_metadata() |
Recupera il valore di un campo di metadati per il tipo di oggetto e l'ID specificati. |
wp-includes/load.php: is_wp_error() |
Controlla se la variabile data è un errore di WordPress. |
wp-includes/class-wp-error.php: WP_Error::__construct() |
Inizializza l'errore. |
Changelog
Versione | Descrizione |
---|---|
4.7.0 | Introdotto. |