WC_REST_Products_Controller::duplicate_product
Duplicate a product and returns the duplicated product. The product status is set to "draft" and the name includes a "(copy)" at the end by default.
Method of the class: WC_REST_Products_Controller{}
No Hooks.
Returns
WP_REST_Response|WP_Error.
Usage
$WC_REST_Products_Controller = new WC_REST_Products_Controller(); $WC_REST_Products_Controller->duplicate_product( $request );
- $request(WP_REST_Request) (required)
- Request data.
WC_REST_Products_Controller::duplicate_product() WC REST Products Controller::duplicate product code WC 10.3.6
public function duplicate_product( $request ) {
$product_id = $request->get_param( 'id' );
$product = wc_get_product( $product_id );
if ( ! $product ) {
return new WP_Error( 'woocommerce_rest_product_invalid_id', __( 'Invalid product ID.', 'woocommerce' ), array( 'status' => 404 ) );
}
// Creating product object from request data in preparation for copying.
$updated_product = $this->prepare_object_for_database( $request );
$duplicated_product = ( new WC_Admin_Duplicate_Product() )->product_duplicate( $updated_product );
if ( is_wp_error( $duplicated_product ) ) {
return new WP_Error( 'woocommerce_rest_product_duplicate_error', $duplicated_product->get_error_message(), array( 'status' => 400 ) );
}
$response_data = $duplicated_product->get_data();
return new WP_REST_Response( $response_data, 200 );
}