WC_API_Products::edit_product( int $id, array $data )
Edit a product
Description Description
Parameters Parameters
- $id
-
(Required) the product ID
- $data
-
(Required)
Return Return
(array|WP_Error)
Source Source
File: includes/legacy/api/v2/class-wc-api-products.php
public function edit_product( $id, $data ) { try { if ( ! isset( $data['product'] ) ) { throw new WC_API_Exception( 'woocommerce_api_missing_product_data', sprintf( __( 'No %1$s data specified to edit %1$s', 'woocommerce' ), 'product' ), 400 ); } $data = $data['product']; $id = $this->validate_request( $id, 'product', 'edit' ); if ( is_wp_error( $id ) ) { return $id; } $product = wc_get_product( $id ); $data = apply_filters( 'woocommerce_api_edit_product_data', $data, $this ); // Product title. if ( isset( $data['title'] ) ) { $product->set_name( wc_clean( $data['title'] ) ); } // Product name (slug). if ( isset( $data['name'] ) ) { $product->set_slug( wc_clean( $data['name'] ) ); } // Product status. if ( isset( $data['status'] ) ) { $product->set_status( wc_clean( $data['status'] ) ); } // Product short description. if ( isset( $data['short_description'] ) ) { // Enable short description html tags. $post_excerpt = ( isset( $data['enable_html_short_description'] ) && true === $data['enable_html_short_description'] ) ? wp_filter_post_kses( $data['short_description'] ) : wc_clean( $data['short_description'] ); $product->set_short_description( $post_excerpt ); } // Product description. if ( isset( $data['description'] ) ) { // Enable description html tags. $post_content = ( isset( $data['enable_html_description'] ) && true === $data['enable_html_description'] ) ? wp_filter_post_kses( $data['description'] ) : wc_clean( $data['description'] ); $product->set_description( $post_content ); } // Validate the product type. if ( isset( $data['type'] ) && ! in_array( wc_clean( $data['type'] ), array_keys( wc_get_product_types() ) ) ) { throw new WC_API_Exception( 'woocommerce_api_invalid_product_type', sprintf( __( 'Invalid product type - the product type must be any of these: %s', 'woocommerce' ), implode( ', ', array_keys( wc_get_product_types() ) ) ), 400 ); } // Check for featured/gallery images, upload it and set it. if ( isset( $data['images'] ) ) { $product = $this->save_product_images( $product, $data['images'] ); } // Save product meta fields. $product = $this->save_product_meta( $product, $data ); // Save variations. if ( $product->is_type( 'variable' ) ) { if ( isset( $data['variations'] ) && is_array( $data['variations'] ) ) { $this->save_variations( $product, $data ); } else { // Just sync variations. $product = WC_Product_Variable::sync( $product, false ); } } $product->save(); do_action( 'woocommerce_api_edit_product', $id, $data ); // Clear cache/transients. wc_delete_product_transients( $id ); return $this->get_product( $id ); } catch ( WC_Data_Exception $e ) { return new WP_Error( $e->getErrorCode(), $e->getMessage(), array( 'status' => $e->getCode() ) ); } catch ( WC_API_Exception $e ) { return new WP_Error( $e->getErrorCode(), $e->getMessage(), array( 'status' => $e->getCode() ) ); } }
Changelog Changelog
Version | Description |
---|---|
2.2 | Introduced. |