/** * Get the images for a product or product variation. * * @param WC_Product|WC_Product_Variation $product * @return array */ protected function get_images($product) { $images = array(); $attachment_ids = array(); if ($product->is_type('variation')) { if (has_post_thumbnail($product->get_variation_id())) { // Add variation image if set. $attachment_ids[] = get_post_thumbnail_id($product->get_variation_id()); } elseif (has_post_thumbnail($product->id)) { // Otherwise use the parent product featured image if set. $attachment_ids[] = get_post_thumbnail_id($product->id); } } else { // Add featured image. if (has_post_thumbnail($product->id)) { $attachment_ids[] = get_post_thumbnail_id($product->id); } // Add gallery images. $attachment_ids = array_merge($attachment_ids, $product->get_gallery_attachment_ids()); } // Build image data. foreach ($attachment_ids as $position => $attachment_id) { $attachment_post = get_post($attachment_id); if (is_null($attachment_post)) { continue; } $attachment = wp_get_attachment_image_src($attachment_id, 'full'); if (!is_array($attachment)) { continue; } $imageData = array('id' => (int) $attachment_id, 'date_created' => wc_rest_prepare_date_response($attachment_post->post_date_gmt), 'date_modified' => wc_rest_prepare_date_response($attachment_post->post_modified_gmt), 'src' => current($attachment), 'name' => get_the_title($attachment_id), 'alt' => get_post_meta($attachment_id, '_wp_attachment_image_alt', true), 'position' => (int) $position); if ($_GET['include'] == 'image-sizes') { $imageData['sizes'] = $this->get_image_sizes($attachment_id); } $images[] = $imageData; } // Set a placeholder image if the product has no images set. if (empty($images)) { $images[] = array('id' => 0, 'date_created' => wc_rest_prepare_date_response(current_time('mysql')), 'date_modified' => wc_rest_prepare_date_response(current_time('mysql')), 'src' => wc_placeholder_img_src(), 'name' => __('Placeholder', 'woocommerce'), 'alt' => __('Placeholder', 'woocommerce'), 'position' => 0); } return $images; }
/** * Get the images for a product or product variation * * @since 2.1 * @param WC_Product|WC_Product_Variation $product * @return array */ private function get_images($product) { $images = $attachment_ids = array(); if ($product->is_type('variation')) { if (has_post_thumbnail($product->get_variation_id())) { // Add variation image if set $attachment_ids[] = get_post_thumbnail_id($product->get_variation_id()); } elseif (has_post_thumbnail($product->id)) { // Otherwise use the parent product featured image if set $attachment_ids[] = get_post_thumbnail_id($product->id); } } else { // Add featured image if (has_post_thumbnail($product->id)) { $attachment_ids[] = get_post_thumbnail_id($product->id); } // Add gallery images $attachment_ids = array_merge($attachment_ids, $product->get_gallery_attachment_ids()); } // Build image data foreach ($attachment_ids as $position => $attachment_id) { $attachment_post = get_post($attachment_id); if (is_null($attachment_post)) { continue; } $attachment = wp_get_attachment_image_src($attachment_id, 'full'); if (!is_array($attachment)) { continue; } $images[] = array('id' => (int) $attachment_id, 'created_at' => $this->server->format_datetime($attachment_post->post_date_gmt), 'updated_at' => $this->server->format_datetime($attachment_post->post_modified_gmt), 'src' => current($attachment), 'title' => get_the_title($attachment_id), 'alt' => get_post_meta($attachment_id, '_wp_attachment_image_alt', true), 'position' => (int) $position); } // Set a placeholder image if the product has no images set if (empty($images)) { $images[] = array('id' => 0, 'created_at' => $this->server->format_datetime(time()), 'updated_at' => $this->server->format_datetime(time()), 'src' => wc_placeholder_img_src(), 'title' => __('Placeholder', 'woocommerce'), 'alt' => __('Placeholder', 'woocommerce'), 'position' => 0); } return $images; }