WC_Data::update_meta_data
Update meta data by key or ID, if provided.
Метод класса: WC_Data{}
Хуков нет.
Возвращает
null. Ничего (null).
Использование
$WC_Data = new WC_Data(); $WC_Data->update_meta_data( $key, $value, $meta_id );
- $key(строка) (обязательный)
- Meta key.
- $value(строка|массив) (обязательный)
- Meta value.
- $meta_id(int)
- Meta ID.
Список изменений
| С версии 2.6.0 | Введена. |
Код WC_Data::update_meta_data() WC Data::update meta data WC 10.3.6
public function update_meta_data( $key, $value, $meta_id = 0 ) {
if ( $this->is_internal_meta_key( $key ) ) {
$function = 'set_' . ltrim( $key, '_' );
if ( is_callable( array( $this, $function ) ) ) {
return $this->{$function}( $value );
}
}
$this->maybe_read_meta_data();
$array_key = false;
if ( $meta_id ) {
$array_keys = array_keys( wp_list_pluck( $this->meta_data, 'id' ), $meta_id, true );
$array_key = $array_keys ? current( $array_keys ) : false;
} else {
// Find matches by key.
$matches = array();
foreach ( $this->meta_data as $meta_data_array_key => $meta ) {
if ( $meta->key === $key ) {
$matches[] = $meta_data_array_key;
}
}
if ( ! empty( $matches ) ) {
// Update first match and delete the rest.
$array_key = array_shift( $matches );
foreach ( $matches as $meta_data_array_key ) {
$this->meta_data[ $meta_data_array_key ]->value = null;
}
}
}
if ( false !== $array_key ) {
$meta = $this->meta_data[ $array_key ];
$meta->key = $key;
$meta->value = $value;
} else {
$this->add_meta_data( $key, $value, true );
}
}