WC_REST_Products_Controller::set_product_images()
Set product images.
Method of the class: WC_REST_Products_Controller{}
Hooks from the method
Return
WC_Product
.
Usage
// protected - for code of main (parent) or child class $result = $this->set_product_images( $product, $images );
- $product(WC_Product) (required)
- Product instance.
- $images(array) (required)
- Images data.
WC_REST_Products_Controller::set_product_images() WC REST Products Controller::set product images code WC 9.5.1
protected function set_product_images( $product, $images ) { $images = is_array( $images ) ? array_filter( $images ) : array(); if ( ! empty( $images ) ) { $gallery = array(); foreach ( $images as $index => $image ) { $attachment_id = isset( $image['id'] ) ? absint( $image['id'] ) : 0; if ( 0 === $attachment_id && isset( $image['src'] ) ) { $upload = wc_rest_upload_image_from_url( esc_url_raw( $image['src'] ) ); if ( is_wp_error( $upload ) ) { if ( ! apply_filters( 'woocommerce_rest_suppress_image_upload_error', false, $upload, $product->get_id(), $images ) ) { throw new WC_REST_Exception( 'woocommerce_product_image_upload_error', $upload->get_error_message(), 400 ); } else { continue; } } $attachment_id = wc_rest_set_uploaded_image_as_attachment( $upload, $product->get_id() ); } if ( ! wp_attachment_is_image( $attachment_id ) ) { /* translators: %s: image ID */ throw new WC_REST_Exception( 'woocommerce_product_invalid_image_id', sprintf( __( '#%s is an invalid image ID.', 'woocommerce' ), $attachment_id ), 400 ); } $featured_image = $product->get_image_id(); if ( 0 === $index ) { $product->set_image_id( $attachment_id ); wc_product_attach_featured_image( $attachment_id, $product, false ); } else { $gallery[] = $attachment_id; } // Set the image alt if present. if ( ! empty( $image['alt'] ) ) { update_post_meta( $attachment_id, '_wp_attachment_image_alt', wc_clean( $image['alt'] ) ); } // Set the image name if present. if ( ! empty( $image['name'] ) ) { wp_update_post( array( 'ID' => $attachment_id, 'post_title' => $image['name'], ) ); } } $product->set_gallery_image_ids( $gallery ); } else { $product->set_image_id( '' ); $product->set_gallery_image_ids( array() ); } return $product; }