WC_API_Products::get_images()privateWC 2.1

Get the images for a product or product variation

Method of the class: WC_API_Products{}

No Hooks.

Return

Array.

Usage

// private - for code of main (parent) class only
$result = $this->get_images( $product );
$product(WC_Product|WC_Product_Variation) (required)
-

Changelog

Since 2.1 Introduced.

WC_API_Products::get_images() code WC 8.7.0

private function get_images( $product ) {
	$images        = $attachment_ids = array();
	$product_image = $product->get_image_id();

	// Add featured image.
	if ( ! empty( $product_image ) ) {
		$attachment_ids[] = $product_image;
	}

	// Add gallery images.
	$attachment_ids = array_merge( $attachment_ids, $product->get_gallery_image_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() ), // Default to now.
			'updated_at' => $this->server->format_datetime( time() ),
			'src'        => wc_placeholder_img_src(),
			'title'      => __( 'Placeholder', 'woocommerce' ),
			'alt'        => __( 'Placeholder', 'woocommerce' ),
			'position'   => 0,
		);
	}

	return $images;
}