Automattic\WooCommerce\Blocks\Utils

ProductGalleryUtils::get_product_variation_gallery_datapublic staticWC 1.0

Get variation gallery data keyed by variation ID.

Method of the class: ProductGalleryUtils{}

No Hooks.

Returns

Array. array<string, mixed>> Variation gallery data.

Usage

$result = ProductGalleryUtils::get_product_variation_gallery_data( $product );
$product(WC_Product) (required)
The product object to retrieve variation gallery data for.

ProductGalleryUtils::get_product_variation_gallery_data() code WC 10.9.1

public static function get_product_variation_gallery_data( $product ) {
	$variation_gallery_data = array();

	if ( ! $product instanceof \WC_Product ) {
		wc_doing_it_wrong( __FUNCTION__, __( 'Invalid product object.', 'woocommerce' ), '10.8.0' );
		return $variation_gallery_data;
	}

	if ( ! $product->is_type( 'variable' ) ) {
		return $variation_gallery_data;
	}

	$variations = $product->get_children();
	if ( ! empty( $variations ) ) {
		// Bulk-load posts + postmeta into WP's object cache.
		_prime_post_caches( $variations );
	}

	// 0 is placeholder image ID.
	$parent_featured_id = 0;
	$product_image_id   = (int) $product->get_image_id();
	if ( $product_image_id && wp_attachment_is_image( $product_image_id ) ) {
		$parent_featured_id = $product_image_id;
	}

	$parent_gallery_ids    = array_map( 'intval', $product->get_gallery_image_ids() );
	$parent_gallery_ids    = array_filter( $parent_gallery_ids, 'wp_attachment_is_image' );
	$parent_gallery_extras = array_values( array_diff( $parent_gallery_ids, array( $parent_featured_id ) ) );

	foreach ( $variations as $variation_id ) {
		$variation_id = (int) $variation_id;
		$entry        = self::build_variation_gallery_entry( $variation_id, $parent_featured_id, $parent_gallery_extras );

		if ( null !== $entry ) {
			$variation_gallery_data[ $variation_id ] = $entry;
		}
	}

	return $variation_gallery_data;
}