data( $product, $form->get_data() ); $already_updated[ $product->get_id() ] = true; } /** * @param WC_Product $product * * @return AttributesForm */ protected function get_form( WC_Product $product ): AttributesForm { $attribute_types = $this->attribute_manager->get_attribute_types_for_product_types( $this->get_applicable_product_types() ); $form = new AttributesForm( $attribute_types, $this->attribute_manager->get_all_values( $product ) ); $form->set_name( 'attributes' ); return $form; } /** * @param WC_Product $product * @param array $data * * @return void */ protected function update_data( WC_Product $product, array $data ): void { foreach ( $this->attribute_manager->get_attribute_types_for_product( $product ) as $attribute_id => $attribute_type ) { if ( isset( $data[ $attribute_id ] ) ) { $this->attribute_manager->update( $product, new $attribute_type( $data[ $attribute_id ] ) ); } } } }