Merge pull request #12738 from woocommerce/api-12727
Return current variations after API update/create
This commit is contained in:
commit
8b85a0080d
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue