/** * Save product images * * @since 2.2 * @param WC_Product $product * @param array $images * @throws WC_API_Exception */ protected function save_product_images($product, $images) { if (is_array($images)) { $gallery = array(); foreach ($images as $image) { if (isset($image['position']) && 0 == $image['position']) { $attachment_id = isset($image['id']) ? absint($image['id']) : 0; if (0 === $attachment_id && isset($image['src'])) { $upload = $this->upload_product_image(esc_url_raw($image['src'])); if (is_wp_error($upload)) { throw new WC_API_Exception('woocommerce_api_cannot_upload_product_image', $upload->get_error_message(), 400); } $attachment_id = $this->set_product_image_as_attachment($upload, $product->get_id()); } $product->set_image_id($attachment_id); } else { $attachment_id = isset($image['id']) ? absint($image['id']) : 0; if (0 === $attachment_id && isset($image['src'])) { $upload = $this->upload_product_image(esc_url_raw($image['src'])); if (is_wp_error($upload)) { throw new WC_API_Exception('woocommerce_api_cannot_upload_product_image', $upload->get_error_message(), 400); } $gallery[] = $this->set_product_image_as_attachment($upload, $id); } else { $gallery[] = $attachment_id; } } } if (!empty($gallery)) { $product->set_gallery_image_ids($gallery); } } else { $product->set_image_id(''); $product->set_gallery_image_ids(array()); } return $product; }
/** * Save product images. * * @throws WC_REST_Exception REST API exceptions. * @param WC_Product $product Product instance. * @param array $images Images data. * @return WC_Product */ protected function save_product_images($product, $images) { if (is_array($images)) { $gallery = array(); foreach ($images as $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 (isset($image['position']) && 0 === $image['position']) { $product->set_image_id($attachment_id); } 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'])); } } if (!empty($gallery)) { $product->set_gallery_image_ids($gallery); } } else { $product->set_image_id(''); $product->set_gallery_image_ids(array()); } return $product; }
/** * Save product images. * * @since 2.2 * @param WC_Product $product * @param array $images * @throws WC_API_Exception * @return WC_Product */ protected function save_product_images($product, $images) { if (is_array($images)) { $gallery = array(); foreach ($images as $image) { if (isset($image['position']) && 0 == $image['position']) { $attachment_id = isset($image['id']) ? absint($image['id']) : 0; if (0 === $attachment_id && isset($image['src'])) { $upload = $this->upload_product_image(esc_url_raw($image['src'])); if (is_wp_error($upload)) { throw new WC_API_Exception('woocommerce_api_cannot_upload_product_image', $upload->get_error_message(), 400); } $attachment_id = $this->set_product_image_as_attachment($upload, $product->get_id()); } $product->set_image_id($attachment_id); } else { $attachment_id = isset($image['id']) ? absint($image['id']) : 0; if (0 === $attachment_id && isset($image['src'])) { $upload = $this->upload_product_image(esc_url_raw($image['src'])); if (is_wp_error($upload)) { throw new WC_API_Exception('woocommerce_api_cannot_upload_product_image', $upload->get_error_message(), 400); } $attachment_id = $this->set_product_image_as_attachment($upload, $id); } $gallery[] = $attachment_id; } // Set the image alt if present. if (!empty($image['alt']) && $attachment_id) { update_post_meta($attachment_id, '_wp_attachment_image_alt', wc_clean($image['alt'])); } // Set the image title if present. if (!empty($image['title']) && $attachment_id) { wp_update_post(array('ID' => $attachment_id, 'post_title' => $image['title'])); } } if (!empty($gallery)) { $product->set_gallery_image_ids($gallery); } } else { $product->set_image_id(''); $product->set_gallery_image_ids(array()); } return $product; }