From fc867c1a58b5a3d1fa915922e62d3205004ac66d Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 3 Jan 2017 16:53:49 +0000 Subject: [PATCH] Return current variations after API update/create --- .../api/class-wc-rest-products-controller.php | 40 +++++++------------ 1 file changed, 14 insertions(+), 26 deletions(-) diff --git a/includes/api/class-wc-rest-products-controller.php b/includes/api/class-wc-rest-products-controller.php index 8b109abf75b..7c825fa36e0 100644 --- a/includes/api/class-wc-rest-products-controller.php +++ b/includes/api/class-wc-rest-products-controller.php @@ -823,7 +823,7 @@ class WC_REST_Products_Controller extends WC_REST_Posts_Controller { * @param array $images Images data. * @return WC_Product */ - protected function save_product_images( $product, $images ) { + protected function set_product_images( $product, $images ) { if ( is_array( $images ) ) { $gallery = array(); @@ -1042,7 +1042,7 @@ class WC_REST_Products_Controller extends WC_REST_Posts_Controller { * @param WP_REST_Request $request Request data. * @return WC_Product */ - protected function save_product_meta( $product, $request ) { + protected function set_product_meta( $product, $request ) { global $wpdb; // Virtual. @@ -1321,6 +1321,8 @@ class WC_REST_Products_Controller extends WC_REST_Posts_Controller { $product = $this->save_default_attributes( $product, $request ); } + $product->save(); + return $product; } @@ -1377,7 +1379,7 @@ class WC_REST_Products_Controller extends WC_REST_Posts_Controller { $image['position'] = 0; } - $variation = $this->save_product_images( $variation, array( $image ) ); + $variation = $this->set_product_images( $variation, array( $image ) ); } // Virtual variation. @@ -1526,23 +1528,7 @@ class WC_REST_Products_Controller extends WC_REST_Posts_Controller { * @return bool|WP_Error */ protected function add_post_meta_fields( $post, $request ) { - $product = wc_get_product( $post ); - - // Check for featured/gallery images, upload it and set it. - if ( isset( $request['images'] ) ) { - $product = $this->save_product_images( $product, $request['images'] ); - } - - // Save product meta fields. - $product = $this->save_product_meta( $product, $request ); - $product->save(); - - // Save variations. - if ( isset( $request['type'] ) && 'variable' === $request['type'] && isset( $request['variations'] ) && is_array( $request['variations'] ) ) { - $this->save_variations_data( $product, $request ); - } - - return true; + return $this->update_post_meta_fields( $post, $request ); } /** @@ -1557,23 +1543,25 @@ class WC_REST_Products_Controller extends WC_REST_Posts_Controller { // Check for featured/gallery images, upload it and set it. if ( isset( $request['images'] ) ) { - $product = $this->save_product_images( $product, $request['images'] ); + $product = $this->set_product_images( $product, $request['images'] ); } // Save product meta fields. - $product = $this->save_product_meta( $product, $request ); + $product = $this->set_product_meta( $product, $request ); + + // Save the product data. + $product->save(); // Save variations. if ( $product->is_type( 'variable' ) ) { if ( isset( $request['variations'] ) && is_array( $request['variations'] ) ) { $this->save_variations_data( $product, $request ); - } else { - // Just sync variations. - $product = WC_Product_Variable::sync( $product, false ); } } - $product->save(); + // Clear caches here so in sync with any new variations/children. + wc_delete_product_transients( $product->get_id() ); + wp_cache_delete( 'product-' . $product->get_id(), 'products' ); return true; }