Forum Replies Created

Viewing 1 replies (of 1 total)
  • Here is your solution, I found out. Just put into your function.php and this would work! Enjoy!

    //No gallery in variant products
    function wvg_available_variation_gallery_edit( $available_variation, $variation, $product_id ){
    
    $product_id = absint( $variation->get_parent_id() );
    $variation_id = absint( $variation->get_id() );
    $variation_image_id = absint( $variation->get_image_id() );
    
    $has_variation_gallery_images = (bool) get_post_meta( $variation_id, 'woo_variation_gallery_images', true );
    // $product = wc_get_product( $product_id );
    
    if ( $has_variation_gallery_images ) {
    $gallery_images = (array) get_post_meta( $variation_id, 'woo_variation_gallery_images', true );
    } else {
    // $gallery_images = $product->get_gallery_image_ids();
    // $gallery_images = $variationProductObject->get_gallery_image_ids();
    $gallery_images = $variation->get_gallery_image_ids();
    
    }
    
    if ( $variation_image_id ) {
    // Add Variation Default Image
    array_unshift( $gallery_images, $variation_image_id );
    } else {
    // Add Product Default Image
    
    /*if ( has_post_thumbnail( $product_id ) ) {
    array_unshift( $gallery_images, get_post_thumbnail_id( $product_id ) );
    }*/
    $parent_product = wc_get_product( $product_id );
    $parent_product_image_id = $parent_product->get_image_id();
    
    if ( ! empty( $parent_product_image_id ) ) {
    array_unshift( $gallery_images, $parent_product_image_id );
    }
    }
    
    $available_variation[ 'variation_gallery_images' ] = array();
    
    foreach ( $gallery_images as $i => $variation_gallery_image_id ) {
    $available_variation[ 'variation_gallery_images' ][ $i ] = get_product_attachment_props( $variation_gallery_image_id );
    }
    
    return $available_variation;
    
    }
    
    		 function get_product_attachment_props( $attachment_id, $product_id = false ) {
    			$props      = array(
    				'image_id'                => '',
    				'title'                   => '',
    				'caption'                 => '',
    				'url'                     => '',
    				'alt'                     => '',
    				'full_src'                => '',
    				'full_src_w'              => '',
    				'full_src_h'              => '',
    				'full_class'              => '',
    				//'full_srcset'              => '',
    				//'full_sizes'               => '',
    				'gallery_thumbnail_src'   => '',
    				'gallery_thumbnail_src_w' => '',
    				'gallery_thumbnail_src_h' => '',
    				'gallery_thumbnail_class' => '',
    				//'gallery_thumbnail_srcset' => '',
    				//'gallery_thumbnail_sizes'  => '',
    				'archive_src'             => '',
    				'archive_src_w'           => '',
    				'archive_src_h'           => '',
    				'archive_class'           => '',
    				//'archive_srcset'           => '',
    				//'archive_sizes'            => '',
    				'src'                     => '',
    				'class'                   => '',
    				'src_w'                   => '',
    				'src_h'                   => '',
    				'srcset'                  => '',
    				'sizes'                   => '',
    			);
    			$attachment = get_post( $attachment_id );
    
    			if ( $attachment ) {
    
    				$props['image_id'] = $attachment_id;
    				$props['title']    = _wp_specialchars( get_post_field( 'post_title', $attachment_id ), ENT_QUOTES, 'UTF-8', true );
    				$props['caption']  = _wp_specialchars( get_post_field( 'post_excerpt', $attachment_id ), ENT_QUOTES, 'UTF-8', true );
    				$props['url']      = wp_get_attachment_url( $attachment_id );
    
    				// Alt text.
    				$alt_text = array(
    					trim( wp_strip_all_tags( get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ) ) ),
    					$props['caption'],
    					wp_strip_all_tags( $attachment->post_title )
    				);
    
    				if ( $product_id ) {
    					$product    = wc_get_product( $product_id );
    					$alt_text[] = wp_strip_all_tags( get_the_title( $product->get_id() ) );
    				}
    
    				$alt_text     = array_filter( $alt_text );
    				$props['alt'] = isset( $alt_text[0] ) ? $alt_text[0] : '';
    
    				// Large version.
    				$full_size           = apply_filters( 'woocommerce_gallery_full_size', apply_filters( 'woocommerce_product_thumbnails_large_size', 'full' ) );
    				$full_size_src       = wp_get_attachment_image_src( $attachment_id, $full_size );
    				$props['full_src']   = esc_url( $full_size_src[0] );
    				$props['full_src_w'] = esc_attr( $full_size_src[1] );
    				$props['full_src_h'] = esc_attr( $full_size_src[2] );
    
    				$full_size_class = $full_size;
    				if ( is_array( $full_size_class ) ) {
    					$full_size_class = implode( 'x', $full_size_class );
    				}
    
    				$props['full_class'] = "attachment-$full_size_class size-$full_size_class";
    				//$props[ 'full_srcset' ] = wp_get_attachment_image_srcset( $attachment_id, $full_size );
    				//$props[ 'full_sizes' ]  = wp_get_attachment_image_sizes( $attachment_id, $full_size );
    
    				// Gallery thumbnail.
    				$gallery_thumbnail                = wc_get_image_size( 'gallery_thumbnail' );
    				$gallery_thumbnail_size           = apply_filters( 'woocommerce_gallery_thumbnail_size', array(
    					$gallery_thumbnail['width'],
    					$gallery_thumbnail['height']
    				) );
    				$gallery_thumbnail_src            = wp_get_attachment_image_src( $attachment_id, $gallery_thumbnail_size );
    				$props['gallery_thumbnail_src']   = esc_url( $gallery_thumbnail_src[0] );
    				$props['gallery_thumbnail_src_w'] = esc_attr( $gallery_thumbnail_src[1] );
    				$props['gallery_thumbnail_src_h'] = esc_attr( $gallery_thumbnail_src[2] );
    
    				$gallery_thumbnail_class = $gallery_thumbnail_size;
    				if ( is_array( $gallery_thumbnail_class ) ) {
    					$gallery_thumbnail_class = implode( 'x', $gallery_thumbnail_class );
    				}
    
    				$props['gallery_thumbnail_class'] = "attachment-$gallery_thumbnail_class size-$gallery_thumbnail_class";
    				//$props[ 'gallery_thumbnail_srcset' ] = wp_get_attachment_image_srcset( $attachment_id, $gallery_thumbnail );
    				//$props[ 'gallery_thumbnail_sizes' ]  = wp_get_attachment_image_sizes( $attachment_id, $gallery_thumbnail );
    
    				// Archive/Shop Page version.
    				$thumbnail_size         = apply_filters( 'woocommerce_thumbnail_size', 'woocommerce_thumbnail' );
    				$thumbnail_size_src     = wp_get_attachment_image_src( $attachment_id, $thumbnail_size );
    				$props['archive_src']   = esc_url( $thumbnail_size_src[0] );
    				$props['archive_src_w'] = esc_attr( $thumbnail_size_src[1] );
    				$props['archive_src_h'] = esc_attr( $thumbnail_size_src[2] );
    
    				$archive_thumbnail_class = $thumbnail_size;
    				if ( is_array( $archive_thumbnail_class ) ) {
    					$archive_thumbnail_class = implode( 'x', $archive_thumbnail_class );
    				}
    
    				$props['archive_class'] = "attachment-$archive_thumbnail_class size-$archive_thumbnail_class";
    				//$props[ 'archive_srcset' ] = wp_get_attachment_image_srcset( $attachment_id, $thumbnail_size );
    				//$props[ 'archive_sizes' ]  = wp_get_attachment_image_sizes( $attachment_id, $thumbnail_size );
    
    				// Image source.
    				$image_size     = apply_filters( 'woocommerce_gallery_image_size', 'woocommerce_single' );
    				$src            = wp_get_attachment_image_src( $attachment_id, $image_size );
    				$props['src']   = esc_url( $src[0] );
    				$props['src_w'] = esc_attr( $src[1] );
    				$props['src_h'] = esc_attr( $src[2] );
    
    				$image_size_class = $image_size;
    				if ( is_array( $image_size_class ) ) {
    					$image_size_class = implode( 'x', $image_size_class );
    				}
    				$props['class']  = "wp-post-image wvg-post-image attachment-$image_size_class size-$image_size_class ";
    				$props['srcset'] = wp_get_attachment_image_srcset( $attachment_id, $image_size );
    				$props['sizes']  = wp_get_attachment_image_sizes( $attachment_id, $image_size );
    
    				$props['extra_params'] = wc_implode_html_attributes( apply_filters( 'woo_variation_gallery_image_extra_params', array(), $props, $attachment_id, $product_id ) );
    
    			}
    
    			return apply_filters( 'woo_variation_gallery_get_image_props', $props, $attachment_id, $product_id );
    		}
    
    add_filter( 'woo_variation_gallery_available_variation_gallery', 'wvg_available_variation_gallery_edit', 30, 3 );
    • This reply was modified 2 years, 10 months ago by akzeitlos.
Viewing 1 replies (of 1 total)