WC_REST_Products_V2_Controller::set_product_images()
Set product images.
Метод класса: WC_REST_Products_V2_Controller{}
Хуки из метода
Возвращает
WC_Product
.
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->set_product_images( $product, $images );
- $product(WC_Product) (обязательный)
- Product instance.
- $images(массив) (обязательный)
- Images data.
Код WC_REST_Products_V2_Controller::set_product_images() WC REST Products V2 Controller::set product images WC 9.3.3
protected function set_product_images( $product, $images ) { $images = is_array( $images ) ? array_filter( $images ) : array(); if ( ! empty( $images ) ) { $gallery_positions = 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: attachment id */ throw new WC_REST_Exception( 'woocommerce_product_invalid_image_id', sprintf( __( '#%s is an invalid image ID.', 'woocommerce' ), $attachment_id ), 400 ); } $gallery_positions[ $attachment_id ] = absint( isset( $image['position'] ) ? $image['position'] : $index ); // 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'], ) ); } // Set the image source if present, for future reference. if ( ! empty( $image['src'] ) ) { update_post_meta( $attachment_id, '_wc_attachment_source', esc_url_raw( $image['src'] ) ); } } // Sort images and get IDs in correct order. asort( $gallery_positions ); // Get gallery in correct order. $gallery = array_keys( $gallery_positions ); // Featured image is in position 0. $image_id = array_shift( $gallery ); // Set images. $product->set_image_id( $image_id ); $product->set_gallery_image_ids( $gallery ); } else { $product->set_image_id( '' ); $product->set_gallery_image_ids( array() ); } return $product; }