Code thêm video vào gallery của Woocommerce (Theme Flatsome)

Có thể bạn quan tâmx

Đoạn code trên sẽ giúp bạn thêm video vào gallery của Woocommerce, khi nhấp vào sẽ hiện lên lightbox video:

Bước 1: Các bạn dùng Advanced Custom Field để tạo 1 trường Video cho sản phẩm. Trường tên là product_video_url .

Bước 2: Sửa file Trong thư mục child theme/woocommerce/single-product/product-gallery-thumbnails.php .

Sửa lại như sau:

<?php

global $post, $product, $woocommerce;





    // Lấy video URL từ custom field
    $video_url = get_field('product_video_url', $post->ID);
if(!empty(  $video_url)){
  

          echo do_shortcode('[lightbox id="lightbox-video" width="800px" padding="20px"][ux_video url="'.esc_url($video_url).'"]
 [/lightbox]');
}


$attachment_ids = fl_woocommerce_version_check('3.0.0') ? $product->get_gallery_image_ids() : $product->get_gallery_attachment_ids();
$thumb_count = count($attachment_ids)+1;

// Disable thumbnails if there is only one extra image.
if($thumb_count == 1) return;

$rtl = 'false';
$thumb_cell_align = 'left';

if(is_rtl()) {
  $rtl = 'true';
  $thumb_cell_align = 'right';
}

if ( $attachment_ids ) {
  $loop     = 0;
  $columns  = apply_filters( 'woocommerce_product_thumbnails_columns', 4 );

  $gallery_class = array('product-thumbnails','thumbnails');

  if($thumb_count <= 5){
    $gallery_class[] = 'slider-no-arrows';
  }

  $gallery_class[] = 'slider row row-small row-slider slider-nav-small small-columns-4';
  ?>
  <div class="<?php echo implode(' ', $gallery_class); ?>"
    data-flickity-options='{
              "cellAlign": "<?php echo $thumb_cell_align;?>",
              "wrapAround": false,
              "autoPlay": false,
              "prevNextButtons": true,
              "asNavFor": ".product-gallery-slider",
              "percentPosition": true,
              "imagesLoaded": true,
              "pageDots": false,
              "rightToLeft": <?php echo $rtl; ?>,
              "contain": true
          }'
    ><?php

?>





<?php 



    if ( has_post_thumbnail() ) : ?>
    <?php
      $image_size = 'thumbnail';

      // Check if custom gallery thumbnail size is set and use that
      if( fl_woocommerce_version_check('3.3.3') ) {
        $image_check = wc_get_image_size( 'gallery_thumbnail' );
        if($image_check['width'] !== 100) $image_size = 'gallery_thumbnail';
      }

      $gallery_thumbnail = wc_get_image_size( $image_size ); ?>
      <div class="col is-nav-selected first">
        <a>
          <?php
            $image_id = get_post_thumbnail_id($post->ID);
            $image =  wp_get_attachment_image_src( $image_id, apply_filters( 'woocommerce_gallery_thumbnail_size', 'woocommerce_'.$image_size ) );
            $image_alt = get_post_meta( $image_id, '_wp_attachment_image_alt', true );
            $image = '<img src="'.$image[0].'" alt="'.$image_alt.'" width="'.$gallery_thumbnail['width'].'" height="'.$gallery_thumbnail['height'].'" class="attachment-woocommerce_thumbnail" />';

            echo $image;
          ?>
        </a>
      </div>
    <?php endif;

    foreach ( $attachment_ids as $attachment_id ) {

      $classes = array( '' );
      $image_class = esc_attr( implode( ' ', $classes ) );
      $image =  wp_get_attachment_image_src( $attachment_id, apply_filters( 'woocommerce_gallery_thumbnail_size', 'woocommerce_'.$image_size ));
      $image_alt = get_post_meta( $attachment_id, '_wp_attachment_image_alt', true );
      $image = '<img src="'.$image[0].'" alt="'.$image_alt.'" width="'.$gallery_thumbnail['width'].'" height="'.$gallery_thumbnail['height'].'"  class="attachment-woocommerce_thumbnail" />';

      echo apply_filters( 'woocommerce_single_product_image_thumbnail_html', sprintf( '<div class="col"><a>%s</a></div>', $image ), $attachment_id, $post->ID, $image_class );

      $loop++;
    }
       $thumbnail_id = get_post_thumbnail_id($post->ID);
        $thumbnail_url = wp_get_attachment_image_url($thumbnail_id, 'woocommerce_thumbnail');
  ?>
<?php 
    $video_url = get_field('product_video_url', $post->ID);
if(!empty(  $video_url)){?>
  <div class="col is-nav-selected col-video ">
    <a href="#lightbox-video" class="ux-lightbox-item mfp-iframe video-thumbnail">
      <img class="attachment-woocommerce_gallery_thumbnail" src="<?php echo $thumbnail_url;?>" alt="Product Video">
<span class="video-icon" style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 30px; color: white;"><i class="icon-play"></i></span>

    </a>
  </div>
<?php } ?>

  </div><!-- .product-thumbnails -->
  <?php
} ?>

Đoạn code trên sẽ chèn video vào cuối Gallery, nếu bạn muốn video lên đầu thì thêm đoạn css này vào nhé:

.product-thumbnails .flickity-slider{
        left: 160px !important;
}
.product-thumbnails .flickity-slider .col-video{
        left: -160px !important;
}

Trên mobile thì các bạn để như này:

    .product-thumbnails .flickity-slider{
        left: 95px !important;
}
.product-thumbnails .flickity-slider .col-video{
        left: -95px !important;
}

Như vậy là oke nhé !

Bài viết liên quan