Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
immortalist
/
wp-content
/
themes
/
woodmart
/
inc
/
integrations
/
woocommerce
/
modules
:
variation-gallery-new.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php if ( ! defined( 'WOODMART_THEME_DIR' ) ) { exit( 'No direct script access allowed' ); } if ( 'new' !== woodmart_get_opt( 'variation_gallery_storage_method', 'new' ) ) { return; } if ( ! function_exists( 'woodmart_export_variation_gallery' ) ) { function woodmart_export_variation_gallery( $value, $meta, $product, $row ) { if ( ! $value || 'wd_additional_variation_images_data' !== $meta->key ) { return $value; } $image_ids = explode( ',', $value ); $images_src = array(); foreach ( $image_ids as $image_id ) { $src = wp_get_attachment_image_src( $image_id, 'full' ); if ( ! empty( $src[0] ) ) { $images_src[] = $src[0]; } } if ( $image_ids ) { return implode( ', ', $images_src ); } return $value; } add_filter( 'woocommerce_product_export_meta_value', 'woodmart_export_variation_gallery', 10, 4 ); } if ( ! function_exists( 'woodmart_importer_variation_gallery' ) ) { function woodmart_importer_variation_gallery( $data ) { if ( !empty( $data['meta:wd_additional_variation_images_data'] ) ) { $images_url = explode( ', ', $data['meta:wd_additional_variation_images_data'] ); $images_id = array(); foreach ( $images_url as $url ) { $id = media_sideload_image( $url, 0, '', 'id' ); if ( ! is_wp_error( $id ) ) { $images_id[] = $id; } } if ( $images_id ) { $data['meta:wd_additional_variation_images_data'] = implode( ',', $images_id ); } } return $data; } add_filter( 'woocommerce_product_importer_pre_expand_data', 'woodmart_importer_variation_gallery', 10, 1 ); } if ( ! function_exists( 'woodmart_avi_save_images' ) ) { function woodmart_avi_save_images( $variation_id ) { if ( isset( $_POST['wd_additional_variation_images'] ) ) { // phpcs:ignore if ( isset( $_POST['wd_additional_variation_images'][ $variation_id ] ) ) { // phpcs:ignore $ids = sanitize_text_field( wp_unslash( $_POST['wd_additional_variation_images'][ $variation_id ] ) ); // phpcs:ignore update_post_meta( $variation_id, 'wd_additional_variation_images_data', $ids ); } else { delete_post_meta( $variation_id, 'wd_additional_variation_images_data' ); } } else { delete_post_meta( $variation_id, 'wd_additional_variation_images_data' ); } } add_action( 'woocommerce_save_product_variation', 'woodmart_avi_save_images', 10, 2 ); } if ( ! function_exists( 'woodmart_avi_get_attachments_data' ) ) { function woodmart_avi_get_attachments_data( $variation ) { $attachments = woodmart_avi_get_attachments( $variation ); $attachments_data = array(); if ( ! $attachments ) { return $attachments_data; } foreach ( $attachments as $attachment_id ) { $attachments_data[] = array( 'id' => $attachment_id, 'url' => wp_get_attachment_image_src( $attachment_id ), ); } return $attachments_data; } } if ( ! function_exists( 'woodmart_avi_get_attachments' ) ) { function woodmart_avi_get_attachments( $variation ) { $images_data = get_post_meta( $variation->ID, 'wd_additional_variation_images_data', true ); if ( ! $images_data ) { return array(); } return array_filter( explode( ',', $images_data ) ); } } if ( ! function_exists( 'woodmart_avi_admin_html' ) ) { function woodmart_avi_admin_html( $loop, $variation_data, $variation ) { if ( ! woodmart_get_opt( 'variation_gallery' ) ) { return; } ?> <div class="woodmart-variation-gallery-wrapper"> <h4> <?php esc_html_e( 'Variation Image Gallery', 'woodmart' ); ?> </h4> <ul class="woodmart-variation-gallery-images"> <?php foreach ( woodmart_avi_get_attachments_data( $variation ) as $attachment ) : ?> <li class="image" data-attachment_id="<?php echo esc_attr( $attachment['id'] ); ?>"> <img src="<?php echo esc_attr( $attachment['url'][0] ); ?>" width="<?php echo esc_attr( $attachment['url'][1] ); ?>" height="<?php echo esc_attr( $attachment['url'][2] ); ?>" alt="variation image"> <a href="#" class="delete woodmart-remove-variation-gallery-image"> <span class="xts-i-close"></span> </a> </li> <?php endforeach; ?> </ul> <input type="hidden" class="variation-gallery-ids" name="wd_additional_variation_images[<?php echo esc_attr( $variation->ID ); ?>]" value="<?php echo esc_attr( implode( ',', woodmart_avi_get_attachments( $variation ) ) ); ?>"> <a href="#" class="button woodmart-add-variation-gallery-image"> <?php esc_html_e( 'Add image', 'woodmart' ); ?> </a> </div> <?php } add_action( 'woocommerce_variation_options', 'woodmart_avi_admin_html', 10, 3 ); } function woodmart_avi_update_available_variation( $available_variation, $variation_object, $variation ) { if ( ! woodmart_get_opt( 'variation_gallery' ) ) { return $available_variation; } $product_id = $variation->get_parent_id(); $default_images_data = woodmart_avi_get_default_data( $product_id ); $variation_id = $available_variation['variation_id']; $images_data = get_post_meta( $variation_id, 'wd_additional_variation_images_data', true ); $ids = array_filter( explode( ',', $images_data ) ); if ( has_post_thumbnail( $variation_id ) ) { $available_variation['additional_variation_images'][] = woodmart_avi_get_image_data( get_post_thumbnail_id( $variation_id ), true ); } foreach ( $ids as $id ) { $available_variation['additional_variation_images'][] = woodmart_avi_get_image_data( $id ); } if ( $default_images_data ) { $available_variation['additional_variation_images_default'] = $default_images_data; } return $available_variation; } add_filter( 'woocommerce_available_variation', 'woodmart_avi_update_available_variation', 10, 3 ); function woodmart_avi_get_default_data( $product_id ) { $product = wc_get_product( $product_id ); if ( ! $product ) { return ''; } $default_image_ids = $product->get_gallery_image_ids(); $images = array(); if ( has_post_thumbnail( $product_id ) ) { $images[] = woodmart_avi_get_image_data( get_post_thumbnail_id( $product_id ), true ); } if ( $default_image_ids && is_array( $default_image_ids ) ) { foreach ( $default_image_ids as $id ) { $images[] = woodmart_avi_get_image_data( $id ); } } return $images; } if ( ! function_exists( 'woodmart_avi_get_image_data' ) ) { function woodmart_avi_get_image_data( $attachment_id, $main_image = false ) { woodmart_lazy_loading_deinit( true ); $gallery_thumbnail = wc_get_image_size( 'gallery_thumbnail' ); $thumbnail_size = apply_filters( 'woocommerce_gallery_thumbnail_size', array( $gallery_thumbnail['width'], $gallery_thumbnail['height'], ) ); $image_size = 'woocommerce_single'; $full_size = apply_filters( 'woocommerce_gallery_full_size', apply_filters( 'woocommerce_product_thumbnails_large_size', 'full' ) ); $thumbnail_src = wp_get_attachment_image_src( $attachment_id, $thumbnail_size ); $full_src = wp_get_attachment_image_src( $attachment_id, $full_size ); $image_src = wp_get_attachment_image_src( $attachment_id, $image_size ); $class = esc_attr( $main_image ? 'wp-post-image' : '' ); if ( ! is_array( $image_src ) ) { return []; } $output = array( 'width' => isset( $image_src[1] ) ? $image_src[1] : '', 'height' => isset( $image_src[2] ) ? $image_src[2] : '', 'src' => isset( $image_src[0] ) ? $image_src[0] : '', 'full_src' => isset( $full_src[0] ) ? $full_src[0] : '', 'thumbnail_src' => isset( $thumbnail_src[0] ) ? $thumbnail_src[0] : '', 'class' => apply_filters( 'woodmart_single_product_gallery_image_class', $class ), 'alt' => trim( wp_strip_all_tags( get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ) ) ), 'title' => _wp_specialchars( get_post_field( 'post_title', $attachment_id ), ENT_QUOTES, 'UTF-8', true ), 'data_caption' => _wp_specialchars( get_post_field( 'post_excerpt', $attachment_id ), ENT_QUOTES, 'UTF-8', true ), 'data_src' => isset( $full_src[0] ) ? esc_url( $full_src[0] ) : '', 'data_large_image' => isset( $full_src[0] ) ? esc_url( $full_src[0] ) : '', 'data_large_image_width' => isset( $full_src[1] ) ? esc_attr( $full_src[1] ) : '', 'data_large_image_height' => isset( $full_src[2] ) ? esc_attr( $full_src[2] ) : '', ); $image_meta = wp_get_attachment_metadata( $attachment_id ); if ( is_array( $image_meta ) ) { $size_array = array( absint( $image_src[1] ), absint( $image_src[2] ) ); $srcset = wp_calculate_image_srcset( $size_array, $image_src[0], $image_meta, $attachment_id ); $sizes = wp_calculate_image_sizes( $size_array, $image_src[0], $image_meta, $attachment_id ); if ( $srcset && ( $sizes || ! empty( $attr['sizes'] ) ) ) { $output['srcset'] = $srcset; if ( empty( $attr['sizes'] ) ) { $output['sizes'] = $sizes; } } } woodmart_lazy_loading_init(); return apply_filters( 'woodmart_get_single_product_image_data', $output, $attachment_id, $main_image ); } }