Automattic\WooCommerce\Blocks\Utils
ProductGalleryUtils::get_product_variation_gallery_data
Get variation gallery data keyed by variation ID.
Method of the class: ProductGalleryUtils{}
No Hooks.
Returns
Array
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() 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;
}