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. |