Задать вопрос
@righto

WooCommerce. Как вывести все изображения у вариативных товаров?

Есть плагин для быстрого просмотра товаров (всплывающее окно при нажатии на изображение). Вот сайт portfolio-rrrgh1.ru/hody Во втором товаре все отображается нормально, это простой товар. Но если сделать товар вариативным по размерам (первый товар), то показывается только 1 изображение во всплывающем окне, т.е. слайдер не работает. Как сделать так, чтобы в первом вариативном товаре также работал слайдер?

Вот код шаблона плагина, где выводятся изображения

global $product, $attachment_ids;

$fullscreen = xt_wooqv_modal_type_is('fullscreen');

$thumb_image_size = apply_filters(
    'xt_wooqv_modal_slider_thumb_size',
    xt_wooqv_option('modal_slider_thumb_size', 'woocommerce_gallery_thumbnail')
);

$single_image_size = apply_filters(
    'xt_wooqv_modal_slider_image_size',
    xt_wooqv_option('modal_slider_image_size', 'woocommerce_single')
);

$attachment_ids = array();

$variation_id = !empty($variation_id) ? $variation_id : null;

if(!empty($variation_id)) {

	$variation = new WC_Product_Variation( $variation_id );

	$image_id = $variation->get_image_id();

	if(!empty($image_id)) {
		$attachment_ids[] = $image_id;
	}

	if(class_exists('WC_Additional_Variation_Images')) {
		$gallery_attachment_ids = get_post_meta( $variation_id, '_wc_additional_variation_images', true );
		$gallery_attachment_ids = explode( ',', $gallery_attachment_ids );
		$attachment_ids = array_merge($attachment_ids, $gallery_attachment_ids);
	}
	
}else{

    $image_id = $product->get_image_id();
	if(!empty($image_id)) {
		$attachment_ids[] = $image_id;
	}

	$gallery_attachment_ids = $product->get_gallery_image_ids();
	$attachment_ids = array_merge($attachment_ids, $gallery_attachment_ids);
}

$attachment_ids = array_filter($attachment_ids);
?>

<div class="xt_wooqv-slider-wrapper" data-attachments="<?php echo count($attachment_ids);?>">

	<ul class="xt_wooqv-slider">
		<?php
		if ( !empty($attachment_ids) ) {

            foreach ( $attachment_ids as $attachment_id ) {

                $props            = wc_get_product_attachment_props( $attachment_id, $product );
                $thumb_image_src  = wp_get_attachment_image_src( $attachment_id, $thumb_image_size, 0);
                $single_image_src  = wp_get_attachment_image_src( $attachment_id, $single_image_size, 0);

                if(empty($single_image_src[0]) || empty($thumb_image_src[0])) {
                    continue;
                }
                echo apply_filters(
                    'woocommerce_single_product_image_html',
                    sprintf(
                        '<li class="test" data-thumb="%s" data-src="%s" itemprop="image" title="%s" style="background-image:url(%s)"><img src="%s" width="%s" height="%s" /></li>',
                        $thumb_image_src[0],
                        $single_image_src[0],
                        esc_attr( $props['caption'] ),
	                    $single_image_src[0],
	                    $single_image_src[0],
	                    $single_image_src[1],
	                    $single_image_src[2]
                    ),
                    get_the_ID()
                );


            }
				
		}else{
			
			echo apply_filters( 'woocommerce_single_product_image_html', sprintf( '<li><img src="%s" alt="%s" /></li>', wc_placeholder_img_src(), __( 'Placeholder', 'woocommerce' ) ), get_the_ID() );
		}
		?>
	</ul>
	
</div>
  • Вопрос задан
  • 304 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы