WC_REST_Products_Controller::set_product_images()protectedWC 1.0

Set product images.

Метод класса: WC_REST_Products_Controller{}

Возвращает

WC_Product.

Использование

// protected - в коде основоного (родительского) или дочернего класса
$result = $this->set_product_images( $product, $images );
$product(WC_Product) (обязательный)
Product instance.
$images(массив) (обязательный)
Images data.

Код WC_REST_Products_Controller::set_product_images() WC 8.7.0

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 );
			} 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;
}