/home/awneajlw/work.codestechvista.com/wp-content/themes/ignavo/includes/woocommerce.php
<?php

/*************************************************
## Woocommerce 
*************************************************/

/*************************************************
## Ignavo Product Box
*************************************************/
require_once get_template_directory() . '/includes/woocommerce/product-type/product-type1.php';
require_once get_template_directory() . '/includes/woocommerce/product-type/product-type2.php';
require_once get_template_directory() . '/includes/woocommerce/product-type/product-type3.php';
require_once get_template_directory() . '/includes/woocommerce/product-type/product-type4.php';
require_once get_template_directory() . '/includes/woocommerce/product-type/product-type-list.php';
require_once get_template_directory() . '/includes/woocommerce/product-type/product-type-list2.php';

/*************************************************
## Ignavo Image
*************************************************/
function ignavo_product_image(){
	global $product;

	$size = get_theme_mod( 'ignavo_product_image_size', array( 'width' => '', 'height' => '') );

	if($size['width'] && $size['height']){
		$image = $product->get_image(array( $size['width'], $size['height'] ), array('class' => 'wp-post-image'));
	} else {
		$image = $product->get_image('woocommerce_thumbnail',array('class' => 'wp-post-image'));
	}

	return $image;

}

/*************************************************
## Ignavo Second Image
*************************************************/
function ignavo_product_second_image(){
	global $product;
	
	$product_image_ids = $product->get_gallery_image_ids();
	$size = get_theme_mod( 'ignavo_product_image_size', array( 'width' => '', 'height' => '') );
			
	if(get_theme_mod('ignavo_product_box_gallery') == 'zoom' || ignavo_ft() == 'productbox_zoom'){
		echo '<div class="product-box-image-zoom">';
		echo '<a class="product-zoom" href="'.get_permalink().'">';
		echo ignavo_product_image();
		echo '</a>';
		echo '</div>';
	} elseif($product_image_ids && get_theme_mod('ignavo_product_box_gallery') == 'flip' || ignavo_ft() == 'productbox_flip'){
		echo '<a href="'.get_permalink().'" class="product-thumbnail">';
		echo '<div class="product-second-image">';
		
		$gallery_count = 1;	
		foreach( $product_image_ids as $product_image_id ){
			if($gallery_count == 1){	
				if($size['width'] && $size['height']){
					echo wp_get_attachment_image($product_image_id, array( $size['width'], $size['height'] ));
				} else {
					echo  wp_get_attachment_image($product_image_id, 'full');
				}
			}	
			$gallery_count++;
		}		
	
		echo '</div><!-- product-second-image -->';
		echo ignavo_product_image();
		echo '</a>';
	} elseif($product_image_ids && get_theme_mod('ignavo_product_box_gallery') == 'slider' || ignavo_ft() == 'productbox_slider'){
				
		echo '<a href="'.get_permalink().'">';
		
		echo '<div class="product-card-carousel">';
		echo '<div class="hover-gallery-slider">';

		echo '<div class="hover-gallery-item">';
		echo ignavo_product_image();
		echo '</div>';

		foreach( $product_image_ids as $product_image_id ){
			echo '<div class="hover-gallery-item">';
				if($size['width'] && $size['height']){
					echo wp_get_attachment_image($product_image_id, array( $size['width'], $size['height'] ));
				} else {
					echo  wp_get_attachment_image($product_image_id, 'full');
				}
			echo '</div><!-- hover-gallery-item -->';
		}
		echo '</div>';
		echo '</div>';
		
		echo ignavo_product_image();	
		echo '</a>';
		
	} else {
		echo '<a href="'.get_permalink().'">';
		echo ignavo_product_image();
		echo '</a>';
	}
}

/*************************************************
## Sale Percentage
*************************************************/
function ignavo_sale_percentage(){
	global $product;

	$output = '';
	
	if(get_theme_mod('ignavo_product_badge_tab', 0) == 1){
		
		$product = wc_get_product(get_the_ID());
		$badgetext = $product->get_meta('_klb_product_badge_text');
		$badgetype = $product->get_meta('_klb_product_badge_type');
		$badgebg = $product->get_meta('_klb_product_badge_bg_color');
		$badgecolor = $product->get_meta('_klb_product_badge_text_color');
		$percentagecheck = $product->get_meta('_klb_product_percentage_check');
		$percentagetype = $product->get_meta('_klb_product_percentage_type');
		$percentagebg = $product->get_meta('_klb_product_percentage_bg_color');
		$percentagecolor = $product->get_meta('_klb_product_percentage_text_color');

		$badgecss = '';
		if($badgebg || $badgecolor){
			$badgecss .= 'style="';
			if($badgebg){
				$badgecss .= 'background: '.esc_attr($badgebg).';';
			}
			if($badgecolor){
				$badgecss .= 'color: '.esc_attr($badgecolor).';';
			}
			$badgecss .= '"';
		}
		
		$percentagecss = '';
		if($percentagebg || $percentagecolor){
			$percentagecss .= 'style="';
			if($percentagebg){
				$percentagecss .= 'background-color: '.esc_attr($percentagebg).';';
			}
			if($percentagecolor){
				$percentagecss .= 'color: '.esc_attr($percentagecolor).';';
			}
			$percentagecss .= '"';
		}
		
		if ( $product->is_on_sale() || $badgetext ){
			$output .= '<div class="product-badge">';
			
			if ( !$percentagecheck && $product->is_on_sale() && $product->is_type( 'variable' ) ) {
				$percentage = ceil(100 - ($product->get_variation_sale_price() / $product->get_variation_regular_price( 'min' )) * 100);
				$output .= '<span class=" badge-primary badge '.esc_attr($percentagetype).' sale" '.$percentagecss.'>'.$percentage.'%</span>';
			} elseif( !$percentagecheck && $product->is_on_sale() && $product->get_regular_price()  && !$product->is_type( 'grouped' )) {
				$percentage = ceil(100 - ($product->get_sale_price() / $product->get_regular_price()) * 100);
				$output .= '<span class=" badge-primary badge '.esc_attr($percentagetype).' sale" '.$percentagecss.'>'.$percentage.'%</span>';
			}

			if($badgetext){
				$output .= '<span class="badge badge-primary style-none'.esc_attr($badgetype).'" '.$badgecss.'>';
				if($badgetype == 'organic'){
					$output .= '<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
                                <path d="M2.29199 3.11798H0.666992C0.666992 6.25098 3.21499 8.79898 6.36099 8.79898V12.049C6.36099 12.517 6.72499 12.894 7.14099 12.894C7.55699 12.894 7.98599 12.517 7.98599 12.075V8.82498C7.98599 5.67898 5.43799 3.11798 2.29199 3.11798ZM12.042 1.50598C9.89699 1.50598 8.05099 2.68898 7.07599 4.44398C7.77799 5.19798 8.29799 6.13398 8.57099 7.17398C11.431 6.87498 13.667 4.45698 13.667 1.50598H12.042Z" fill="currentColor"/>
                                </svg>';
				}elseif($badgetype == 'cold-sale'){
					$output .= '<svg width="14" height="15" viewBox="0 0 14 15" fill="none" xmlns="http://www.w3.org/2000/svg">
                                <path d="M12.8937 10.042L11.4657 9.22995L12.6977 8.50195C12.9217 8.36195 13.0057 8.06795 12.8657 7.84395C12.7397 7.61995 12.4457 7.53595 12.2077 7.67595L10.5137 8.66995L7.95169 7.19995L10.5137 5.71595L12.2077 6.72395C12.2917 6.76595 12.3757 6.79395 12.4597 6.79395C12.6137 6.79395 12.7817 6.70995 12.8657 6.55595C13.0057 6.33195 12.9217 6.03795 12.6977 5.89795L11.4657 5.16995L12.8937 4.35795C13.1177 4.21795 13.1877 3.92395 13.0617 3.69995C12.9357 3.47595 12.6417 3.39195 12.4037 3.51795L10.9897 4.34395L10.9757 2.91595C10.9757 2.64995 10.7517 2.43995 10.4997 2.43995C10.2337 2.43995 10.0237 2.66395 10.0237 2.92995L10.0377 4.88995L7.47569 6.37395V3.41995L9.19769 2.45395C9.42169 2.31395 9.50569 2.01995 9.37969 1.79595C9.23969 1.57195 8.95969 1.48795 8.72169 1.61395L7.47569 2.31395V0.675951C7.47569 0.409951 7.26569 0.199951 6.99969 0.199951C6.73369 0.199951 6.52369 0.409951 6.52369 0.675951V2.31395L5.27769 1.61395C5.05369 1.48795 4.75969 1.57195 4.61969 1.79595C4.49369 2.01995 4.57769 2.31395 4.80169 2.45395L6.52369 3.41995V6.37395L3.96169 4.88995L3.97569 2.92995C3.98969 2.66395 3.76569 2.43995 3.51369 2.43995C3.49969 2.43995 3.49969 2.43995 3.49969 2.43995C3.24769 2.43995 3.02369 2.64995 3.02369 2.91595L3.00969 4.34395L1.59569 3.51795C1.35769 3.39195 1.06369 3.47595 0.93769 3.69995C0.81169 3.92395 0.88169 4.21795 1.11969 4.35795L2.53369 5.16995L1.30169 5.89795C1.07769 6.03795 0.99369 6.33195 1.13369 6.55595C1.21769 6.70995 1.38569 6.79395 1.53969 6.79395C1.62369 6.79395 1.70769 6.76595 1.79169 6.72395L3.48569 5.71595L6.04769 7.19995L3.48569 8.68395L1.79169 7.67595C1.55369 7.53595 1.27369 7.61995 1.13369 7.84395C0.99369 8.06795 1.07769 8.36195 1.30169 8.50195L2.53369 9.22995L1.11969 10.042C0.88169 10.182 0.81169 10.476 0.93769 10.7C1.02169 10.854 1.18969 10.938 1.35769 10.938C1.42769 10.938 1.51169 10.924 1.59569 10.868L3.00969 10.056L3.02369 11.484C3.02369 11.75 3.24769 11.96 3.49969 11.96C3.49969 11.96 3.49969 11.96 3.51369 11.96C3.76569 11.96 3.98969 11.736 3.97569 11.47L3.96169 9.50995L6.52369 8.02595V10.98L4.80169 11.946C4.57769 12.086 4.49369 12.38 4.61969 12.604C4.71769 12.758 4.87169 12.842 5.03969 12.842C5.12369 12.842 5.20769 12.828 5.27769 12.786L6.52369 12.086V13.724C6.52369 13.99 6.73369 14.2 6.99969 14.2C7.26569 14.2 7.47569 13.99 7.47569 13.724V12.086L8.72169 12.786C8.79169 12.828 8.87569 12.842 8.95969 12.842C9.12769 12.842 9.28169 12.758 9.37969 12.604C9.50569 12.38 9.42169 12.086 9.19769 11.946L7.47569 10.98V8.02595L10.0377 9.50995L10.0237 11.47C10.0237 11.736 10.2337 11.96 10.4857 11.96C10.4997 11.96 10.4997 11.96 10.4997 11.96C10.7657 11.96 10.9757 11.75 10.9757 11.484L10.9897 10.056L12.4037 10.868C12.4877 10.924 12.5717 10.938 12.6417 10.938C12.8097 10.938 12.9777 10.854 13.0617 10.7C13.1877 10.476 13.1177 10.182 12.8937 10.042Z" fill="currentColor"/>
                                </svg>';
				}
				$output .= esc_html($badgetext);
				$output .= '</span>';
			}
			
			
			
			$output .= '</div>';
		}
	}

	return $output;

}

/*************************************************
## Sale Percentage 2
*************************************************/
function ignavo_sale_percentage2(){
	global $product;

	$output = '';

	if(get_theme_mod('ignavo_product_badge_tab', 0) == 1){

		if ( $product->is_on_sale() && $product->is_type( 'variable' ) ) {
			$percentage = '-'.ceil(100 - ($product->get_variation_sale_price() / $product->get_variation_regular_price( 'min' )) * 100);
			$output .= '<div class="product-badge"><div class="badge badge-red style-1">'.$percentage.'%</div></div>';
		} elseif( $product->is_on_sale() && $product->get_regular_price()  && !$product->is_type( 'grouped' )) {
			$percentage = '-'.ceil(100 - ($product->get_sale_price() / $product->get_regular_price()) * 100);
			$output .= '<div class="product-badge">';
			$output .= '<div class="badge badge-red style-1">'.$percentage.'%</div>';
			$output .= '</div>';
		}
	}
	
	return $output;

}

/*************************************************
## Vendor Name
*************************************************/
function ignavo_vendor_name(){
	if(class_exists('WeDevs_Dokan')){
		// Get the author ID (the vendor ID)
		$vendor_id = get_post_field( 'post_author', get_the_id() );
		
		$vendor                   = dokan()->vendor->get( $vendor_id );	
		$user_description 		  = get_the_author_meta( 'description', $vendor_id );
		$store_banner_id          = $vendor->get_banner_id();
		$store_name               = $vendor->get_shop_name();
		$store_url                = $vendor->get_shop_url();
		$store_rating             = $vendor->get_rating();			
		$is_store_featured        = $vendor->is_featured();
		
		if (isset($store_name) && $store_name) {
			$output = '';
			
			$output .= '<div class="product-vendor simple">';
			$output .= '<span>'.esc_html__('Store: ', 'ignavo').'</span>';
			$output .= '<a href="'.esc_url($store_url).'">'.esc_html($store_name).'</a>';
			$output .= '</div>';
			
			return $output;		
		}
	}
}

/*************************************************
## Single Vendor Name
*************************************************/
function ignavo_single_vendor_name(){
	if(class_exists('WeDevs_Dokan')){
		// Get the author ID (the vendor ID)
		$vendor_id = get_post_field( 'post_author', get_the_id() );
		
		$vendor                   = dokan()->vendor->get( $vendor_id );	
		$user_description 		  = get_the_author_meta( 'description', $vendor_id );
		$store_banner_id          = $vendor->get_banner_id();
		$store_name               = $vendor->get_shop_name();
		$store_url                = $vendor->get_shop_url();
		$store_rating             = $vendor->get_rating();			
		$is_store_featured        = $vendor->is_featured();
		
		if (isset($store_name) && $store_name) {
			$output = '';
			
			$output .= '<div class="product-vendor">';
			$output .= '<div class="vendor-brand">';
			$output .= '<a href="'.esc_url($store_url).'"><img src="'.esc_url( $vendor->get_avatar() ).'" alt="'.esc_attr($store_name).'"></a>';
			$output .= '</div><!-- vendor-brand -->';
			$output .= '<div class="vendor-detail">';
			$output .= '<span>'.esc_html__('Store:', 'ignavo').'</span>';
			$output .= '<h4 class="store-name"><a href="'.esc_url($store_url).'">'.esc_html($store_name).'</a></h4>';
			$output .= '</div><!-- vendor-detail -->';
			$output .= '<div class="vendor-rating">';
			$output .= '<div class="product-rating yellow">';
                     
			$output .= '<div class="rating-count">';
			$output .= wc_get_rating_html($store_rating['rating'], $store_rating['count'] );
			$output .= '<span class="count-text">'.esc_html($store_rating['count']).'</span>';
			$output .= '</div><!-- rating-count -->';
			$output .= '</div><!-- product-rating --> ';             
			$output .= '</div><!-- vendor-rating -->';
			$output .= '</div>';
		
			return $output;		
		}
	}
}

if ( class_exists( 'woocommerce' ) ) {
add_theme_support( 'woocommerce' );
add_image_size('ignavo-woo-product', 450, 450, true);

// Remove woocommerce defauly styles
add_filter( 'woocommerce_enqueue_styles', '__return_false' );

// hide default shop title anasayfadaki title gizlemek için
add_filter('woocommerce_show_page_title', 'ignavo_override_page_title');
function ignavo_override_page_title() {
return false;
}

remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 ); /*remove result count above products*/
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10);
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 5 ); //remove rating
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10 ); //remove rating
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10);
remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_sale_flash', 10);
remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title',10);

add_action( 'woocommerce_before_shop_loop_item', 'ignavo_shop_box', 10);
remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );
remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 ); /*remove breadcrumb*/



remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products',20);
remove_action( 'woocommerce_after_single_product', 'woocommerce_output_related_products',10);
add_action( 'woocommerce_after_single_product_summary', 'ignavo_related_products', 20);
function ignavo_related_products(){
	$related_column = get_theme_mod('ignavo_shop_related_post_column') ? get_theme_mod('ignavo_shop_related_post_column') : '4';
    woocommerce_related_products( array('posts_per_page' => $related_column, 'columns' => $related_column));
}

/*----------------------------
  Cross Sells Columns
 ----------------------------*/
remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cross_sell_display');
add_action( 'woocommerce_after_cart', 'ignavo_change_cross_sells_columns', 20);
function ignavo_change_cross_sells_columns() {
	$crosssells = get_theme_mod('ignavo_cross_sells_column') ? get_theme_mod('ignavo_cross_sells_column') : '4';
	woocommerce_cross_sell_display($crosssells, $crosssells);
}

/*----------------------------
  Upsell Columns
 ----------------------------*/
add_filter( 'woocommerce_upsell_display_args', 'ignavo_change_number_related_products', 20 );
function ignavo_change_number_related_products( $args ) {
	$args['posts_per_page'] = get_theme_mod('ignavo_upsell_column', 4);
	$args['columns'] = get_theme_mod('ignavo_upsell_column', 4);
	return $args;
}

/*************************************************
## Single Image Box
*************************************************/
if(!function_exists('ignavo_single_product_imagebox')){
	function ignavo_single_product_imagebox(){
		global $product;
		
		$imagebox = get_theme_mod( 'ignavo_single_imagebox', '0' );
		
		if($imagebox == '1'){
			echo'<div class="product-iconboxes box-grid" style=" --box-group-gap-lg: 16px; --box-group-gap-sm: 10px; --box-group-gap-xs: 10px; --box-padding-inline-lg: 30px;  --box-padding-inline-sm: 20px;  --box-padding-block: 20px; --box-padding-inline: 20px;  --box-padding-inline-lg: 20px; --box-padding-block-lg: 30px;  --box-padding-block-sm: 20px;">';
			
			$imagebox = get_theme_mod('ignavo_shop_single_imagebox_repeater'); 
			foreach($imagebox as $i){ 
				echo'<div class="box-grid-item bg-gray-50 rounded-sm">';
				echo'<div class="site-iconbox flex-col items-center justify-center text-center" style=" --iconbox-icon: 48px; --iconbox-title: 15px;  --iconbox-title-mobile: 14px; --iconbox-title-font-weight: 600; --iconbox-description: 12px; --iconbox-row-gap: 16px; ">';
				echo'<div class="site-iconbox-icon">';
				echo '<img src="'.esc_url($i['imagebox_image']).'"/>';		
				echo'</div>';
				echo'<div class="site-iconbox-detail">';
				echo'<h4 class="entry-title">'.ignavo_sanitize_data($i['imagebox_title']).'</h4>';
				echo'<p>'.ignavo_sanitize_data($i['imagebox_subtitle']).'</p>';
				echo'</div>';
				echo'</div>';
				echo'</div>';
			}
			echo'</div>';

		}	
	}	
}
add_action('ignavo_shop_single_imagebox','ignavo_single_product_imagebox');


/*-------------------------------------------
  Product SKU
 --------------------------------------------*/
function ignavo_product_sku(){
	global $product;	

	if ( wc_product_sku_enabled() && ( $product->get_sku() || $product->is_type( 'variable' ) ) ) : ?>	
		<div class="product-sku">
			<span><?php esc_html_e( 'SKU:', 'ignavo' ); ?></span>
			<span class="sku"><?php echo ( ignavo_sanitize_data($sku = $product->get_sku() )) ? $sku : esc_html__( 'N/A', 'ignavo' ); ?></span>
		</div><!-- product-sku -->
	<?php endif; 	
}
add_action( 'ignavo_sku_rating', 'ignavo_product_sku', 15 );

/*************************************************
## Single Product Header
*************************************************/
if(!function_exists('ignavo_single_product_header_top')){
	function ignavo_single_product_header_top(){
		global $product;
		
		echo'<div class="product-header">';
		
			echo do_action('ignavo_single_title');
			
			echo'<div class="product-meta">';
				
				echo do_action('ignavo_single_rating');
				
				echo do_action('ignavo_sku_rating');
				
				echo wc_get_stock_html( $product ); 
				
			echo'</div>';
		echo'</div>';

	}	
}
add_action('ignavo_single_header_top','ignavo_single_product_header_top');

//Remove Single Title
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title',5);
add_action( 'ignavo_single_title', 'woocommerce_template_single_title',5);

//Remove Single Rating
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_rating',10);
add_action( 'ignavo_single_rating', 'woocommerce_template_single_rating',10);


/*----------------------------
  Single Share
 ----------------------------*/
if(!function_exists('ignavo_social_share')){
	function ignavo_social_share(){
		$socialshare = get_theme_mod( 'ignavo_shop_social_share', '0' );

		if($socialshare == '1'){
			wp_enqueue_script('jquery-socialshare');
			wp_enqueue_script('klb-social-share');
		 
			$single_share_multicheck = get_theme_mod('ignavo_shop_single_share',array( 'facebook', 'twitter', 'pinterest', 'whatsapp'));
			
			echo'<div class="product-share social-container">';
			echo'<span>'.esc_html__('Share:', 'ignavo').'</span>';
			echo'<div class="site-social">';
				echo'<ul class="site-social social-rounded-full color-social bg-white bordered">';
					if(in_array('facebook', $single_share_multicheck)){
						echo'<li><a href="#" class="filled social-color facebook"><i class="klb-social-facebook-f"></i></a></li>';
					}
					if(in_array('twitter', $single_share_multicheck)){
						echo'<li><a href="#" class="filled social-color twitter"><i class="klb-social-twitter"></i></a></li>';
					}
					if(in_array('pinterest', $single_share_multicheck)){	
						echo'<li><a href="#" class="filled social-color pinterest"><i class="klb-social-pinterest"></i></a></li>';
					}
					if(in_array('whatsapp', $single_share_multicheck)){	
						echo'<li><a href="#" class="filled social-color whatsapp"><i class="klb-social-whatsapp"></i></a></li>';
					}	
				echo'</ul>';
				
			echo'</div><!-- site-social -->';
			echo'</div><!-- product-share -->';

		}
	}
}
add_action( 'woocommerce_single_product_summary', 'ignavo_social_share', 40 );

/*-------------------------------------------
  Product Single Extra 
 --------------------------------------------*/
 if(!function_exists('ignavo_single_product_extra')){
	function ignavo_single_product_extra(){
		
		$productextra = get_theme_mod( 'ignavo_single_extra', '0' );
		
		if($productextra == '1'){
			echo '<div class="product-service">';
			echo '<ul>';
				
				$productextra = get_theme_mod('ignavo_single_products_extra'); 
				foreach($productextra as $f){ 
		
					echo '<li class="service-item">';
					echo '<div class="service-icon">';
					echo '<img src="'.esc_url($f['extra_image']).'"/>';		  
					echo '</div>';
					echo '<div class="service-detail">'.ignavo_sanitize_data($f['extra_title']).'</div>';
					echo '</li>';
				  
				}
			echo '</ul>';
			echo '</div>';
		}
		
	}
}
add_action( 'woocommerce_single_product_summary', 'ignavo_single_product_extra', 35 );

/*-------------------------------------------
  Product Assistant
 --------------------------------------------*/
if(!function_exists('ignavo_single_product_assistant')){
	function ignavo_single_product_assistant(){
		$assistant 			= get_theme_mod( 'ignavo_single_assistant', '0' );
		$assistantimage		= get_theme_mod('ignavo_single_assistant_image'); 
		$assistanttitle 	= get_theme_mod('ignavo_single_assistant_title'); 
		$assistantsubtitle 	= get_theme_mod('ignavo_single_assistant_subtitle'); 
		
		if($assistant == '1'){
			
			echo '<div class="product-call">';
			echo '<a href="#">';
			echo '<div class="call-icon">';
			echo '<img src="'.esc_url(wp_get_attachment_url($assistantimage)).'">';                
			echo '</div>';
			echo '<div class="call-detail">';
			echo '<span>'.esc_html($assistanttitle).'</span>';
			echo '<p>'.ignavo_sanitize_data($assistantsubtitle).'</p>';
			echo '</div>';
			echo '</a>';
			echo '</div>';
		}
	}
}
add_action( 'woocommerce_single_product_summary', 'ignavo_single_product_assistant', 36);

/*************************************************
## Product Box SKU 
*************************************************/
function ignavo_product_box_sku($stockprogressbar = '', $stockstatus = '', $shippingclass = '', $countdown = '', $product_sku = ''){

	if($product_sku != 'true'){
		return;
	}
	
	global $product;

	if ( wc_product_sku_enabled() && ( $product->get_sku() || $product->is_type( 'variable' ) ) ){
		echo '<span class="sku_wrapper">'.esc_html__( 'SKU:', 'ignavo' ).'<span class="sku">'.esc_html($product->get_sku()).'</span></span>';
	}
}
add_action('ignavo_product_box_footer', 'ignavo_product_box_sku', 15, 5);

/*************************************************
## Product Brands
*************************************************/
function ignavo_product_brands($stockprogressbar = '', $stockstatus = '', $shippingclass = '', $countdown = '', $product_sku = '', $product_brands = '', $productattributes = ''){
	if($product_brands != 'true'){
		return;
	}
	
	global $post;
	
	$terms       = get_the_terms( $post->ID, 'product_brand' );
	$brand_count = is_array( $terms ) ? count( $terms ) : 0;

	$taxonomy = get_taxonomy( 'product_brand' );
	$labels   = $taxonomy->labels;

	/* translators: %s - Label name */
	$brand_output = wc_get_brands( $post->ID, ', ', ' <span class="klb-product-brands">' . sprintf( _n( '%s: ', '%s: ', $brand_count, 'ignavo' ), $labels->singular_name, $labels->name ), '</span>' );

	echo apply_filters( 'woocommerce_product_brands_output', $brand_output, $terms, $post->ID ); // phpcs:ignore WordPress.Security.EscapeOutput
}
add_action('ignavo_product_box_footer', 'ignavo_product_brands', 15, 6);

/*************************************************
## Product Attributes
*************************************************/
function ignavo_product_attributes($stockprogressbar = '', $stockstatus = '', $shippingclass = '', $countdown = '', $product_sku = '', $product_brands = '', $productattributes = ''){
	if($productattributes != 'true'){
		return;
	}
	
	global $product;
	
	echo '<div class="klb-product-attributes">';
	wc_display_product_attributes( $product );
	echo '</div>';
}
add_action('ignavo_product_box_footer', 'ignavo_product_attributes', 15, 7);

/*-------------------------------------------
  Product Single Wishlist Compare Button
 --------------------------------------------*/
function ignavo_single_product_buttons(){
	global $product;	
		
		echo '<div class="cart-actions actions-buttons">';
		echo '<div class="product-cart-action product-wishlist">';
			do_action('ignavo_wishlist_action');
		echo '</div>';
		
		echo '<div class="product-cart-action product-compare">';
			do_action('ignavo_compare_action');
		echo '</div>';
		echo '</div>';

}
add_action( 'woocommerce_after_add_to_cart_button', 'ignavo_single_product_buttons' );


if(!function_exists('ignavo_people_added_in_cart')){
	function ignavo_people_added_in_cart(){
		return;
	}
}

/*************************************************
## Re-order WooCommerce Single Product Summary
*************************************************/
$reorder_single = get_theme_mod( 'ignavo_shop_single_reorder', 
	array( 
		'woocommerce_template_single_excerpt',
		'woocommerce_template_single_price', 
		'ignavo_people_added_in_cart', 
		'woocommerce_template_single_add_to_cart', 
		'ignavo_single_product_extra',
		'ignavo_single_product_assistant',
		'ignavo_social_share',
		'woocommerce_template_single_meta', 
		
	) 
);

if($reorder_single){
	remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
	remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20 );
	remove_action( 'woocommerce_single_product_summary', 'ignavo_people_added_in_cart', 28 );
	remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
	remove_action( 'woocommerce_single_product_summary', 'ignavo_single_product_extra', 35);
	remove_action( 'woocommerce_single_product_summary', 'ignavo_single_product_assistant', 36);
	remove_action( 'woocommerce_single_product_summary', 'ignavo_social_share', 40);
	remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );
	
	
	$count = 7;
	
	foreach ( $reorder_single as $single_part ) {
		
		add_action( 'woocommerce_single_product_summary', $single_part, $count );
		
		$count+=7;
	}
}

/*************************************************
## Ignavo Quickview
*************************************************/
function ignavo_quickview(){
	global $product;
	
	$output = '';
	
	$quickview = get_theme_mod( 'ignavo_quick_view_button', '0' );
	
	if($quickview == '1'){
		$output .= '<div class="product-action-button product-quickview">';
		$output .= '<a data-product_id="'.$product->get_id().'">';
		$output .= '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">';
		$output .= '<path d="M2.06202 12.348C1.97868 12.1235 1.97868 11.8765 2.06202 11.652C2.87372 9.68385 4.25153 8.00103 6.02079 6.81689C7.79004 5.63275 9.87106 5.00061 12 5.00061C14.129 5.00061 16.21 5.63275 17.9792 6.81689C19.7485 8.00103 21.1263 9.68385 21.938 11.652C22.0214 11.8765 22.0214 12.1235 21.938 12.348C21.1263 14.3161 19.7485 15.999 17.9792 17.1831C16.21 18.3672 14.129 18.9994 12 18.9994C9.87106 18.9994 7.79004 18.3672 6.02079 17.1831C4.25153 15.999 2.87372 14.3161 2.06202 12.348Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>';
		$output .= '<path d="M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>';
		$output .= '</svg>';
		$output .= '</a>';
		$output .= '</div>';
	}

	return $output;
}

/*************************************************
## Shipping Class Name
*************************************************/
function ignavo_shipping_class_name($stockprogressbar = '', $stockstatus = '', $shippingclass = '') {
	if($shippingclass != 'true'){
		return;
	}
	
	if(is_product()){
		return;
	}

	global $product;
	if($product){
		$class_id = $product->get_shipping_class_id();
		if ( $class_id ) {
			$term = get_term_by( 'id', $class_id, 'product_shipping_class' );
			
			if ( $term && ! is_wp_error( $term ) ) {
				if(get_theme_mod('ignavo_product_box_shipping_class_type') == 'bordered'){
					echo '<div class="product-delivery-time fast-shipping"><i class="klb-icon-box-iso-thin"></i> '.esc_html($term->name).'</div>';
				} else {
					echo '<div class="product-delivery-time">'.esc_html($term->name).'</div>';
				}
			}
		}
	}
}
add_action('ignavo_product_box_footer', 'ignavo_shipping_class_name', 15, 3);

/*************************************************
## Stock Status with Poor
*************************************************/
function ignavo_poor_stock_status($stockprogressbar = '', $stockstatus = ''){
	if($stockstatus != 'true'){
		return;
	}
	
	global $product;
	
	$output = '';
	
	$stock_status = $product->get_stock_status();
	$stock_text = $product->get_availability();
	
	$managestock = $product->managing_stock();
	$stock_quantity = $product->get_stock_quantity();
	$stock_format = esc_html__('Only %s left in stock','ignavo');

	if(get_theme_mod('ignavo_product_box_poor_stock') == '1' && $managestock && $stock_quantity < 10) {
		$output .= '<div class="product-stock text-red-600"><span class="text-11 fw-bold text-uppercase">'.sprintf($stock_format, $stock_quantity).'</span></div>';
	} else {
		if($stock_status == 'instock' && $stock_text['availability']){
			$output .= '<div class="product-stock text-green-600 in-stock"><span class="text-11 fw-bold text-uppercase"> '.$stock_text['availability'].'</span></div>';
		} elseif($stock_text['availability']) {
			$output .= '<div class="solded-product outof-stock"><span class="bordered text-red-900">'.$stock_text['availability'].'</span></div>';
		}
	}
	
	echo ignavo_sanitize_data($output);
}
add_action('ignavo_product_box_footer', 'ignavo_poor_stock_status', 15, 2);

/*----------------------------
  Add my owns Product Box
 ----------------------------*/
function ignavo_shop_box () {
	
	$postview  = isset( $_POST['shop_view'] ) ? $_POST['shop_view'] : '';
	
	$stockprogressbar = get_theme_mod('ignavo_product_box_stock_progress_bar') == 1 || ignavo_ft() == 'progressbar' ? 'true' : '';
	$stockstatus = get_theme_mod('ignavo_product_box_stock_status') == 1 || ignavo_ft() == 'stock_status' ? 'true' : '';
	$shippingclass = get_theme_mod('ignavo_product_box_shipping_class') == 1 || ignavo_ft() == 'box_shipping' ? 'true' : '';
	$countdown = get_theme_mod('ignavo_product_box_countdown') == 1 || ignavo_ft() == 'box_countdown' ? 'true' : '';
	$product_sku = get_theme_mod('ignavo_product_box_sku') == 1 || ignavo_ft() == 'box_sku' ? 'true' : '';
	$product_brands = get_theme_mod('ignavo_product_box_brands') == 1 || ignavo_ft() == 'product_brands' ? 'true' : '';
	$productattributes = get_theme_mod('ignavo_product_box_attributes') == 1 || ignavo_ft() == 'product_attributes' ? 'true' : '';

	if(ignavo_shop_view() == 'list_view' || $postview == 'list_view') {
		echo ignavo_product_type_list($stockprogressbar, $stockstatus, $shippingclass, $countdown, $product_sku, $product_brands, $productattributes);
	} else if(get_theme_mod('ignavo_product_box_type') == 'type4'){
		echo ignavo_product_type4($stockprogressbar, $stockstatus, $shippingclass, $countdown, $product_sku, $product_brands, $productattributes);
	} else if(get_theme_mod('ignavo_product_box_type') == 'type3'){
		echo ignavo_product_type3($stockprogressbar, $stockstatus, $shippingclass, $countdown, $product_sku, $product_brands, $productattributes);
	} else if(get_theme_mod('ignavo_product_box_type') == 'type2'){
		echo ignavo_product_type2($stockprogressbar, $stockstatus, $shippingclass, $countdown, $product_sku, $product_brands, $productattributes);
	} else {
		echo ignavo_product_type1($stockprogressbar, $stockstatus, $shippingclass, $countdown, $product_sku, $product_brands, $productattributes);
	}
}

/*************************************************
## Woo Cart Ajax
*************************************************/ 
add_filter('woocommerce_add_to_cart_fragments', 'ignavo_header_add_to_cart_fragment');
function ignavo_header_add_to_cart_fragment( $fragments ) {
	global $woocommerce;
	ob_start();
	?>
	
	<span class="site-action-count cart-count count"><?php echo sprintf(_n('%d', '%d', $woocommerce->cart->cart_contents_count, 'ignavo'), $woocommerce->cart->cart_contents_count);?></span>
	

	<?php
	$fragments['span.cart-count'] = ob_get_clean();

	return $fragments;
}

add_filter( 'woocommerce_add_to_cart_fragments', function($fragments) {

    ob_start();
    ?>

    <div class="fl-mini-cart-content">
        <?php woocommerce_mini_cart(); ?>
    </div>

    <?php $fragments['div.fl-mini-cart-content'] = ob_get_clean();

    return $fragments;

} );

add_filter('woocommerce_add_to_cart_fragments', 'ignavo_header_add_to_cart_fragment_subtotal');
function ignavo_header_add_to_cart_fragment_subtotal( $fragments ) {
	global $woocommerce;
	ob_start();
	?>
	
    <p class="cart-price"><?php echo WC()->cart->get_cart_subtotal(); ?></p>

    <?php $fragments['.cart-price'] = ob_get_clean();

	return $fragments;
}

add_filter('woocommerce_add_to_cart_fragments', 'ignavo_header_add_to_cart_fragment_cart_count_text');
function ignavo_header_add_to_cart_fragment_cart_count_text( $fragments ) {
	global $woocommerce;
	ob_start();
	?>
	
    <div class="cart-count-text count-text"><?php echo sprintf(_n('%d item', '%d items', $woocommerce->cart->cart_contents_count, 'ignavo'), $woocommerce->cart->cart_contents_count);?></div>

    <?php $fragments['.cart-count-text'] = ob_get_clean();

	return $fragments;
}

/*************************************************
## Ignavo Woo Search Form
*************************************************/ 
add_filter( 'get_product_search_form' , 'ignavo_custom_product_searchform' );

function ignavo_custom_product_searchform( $form ) {

	$form = '<form action="' . esc_url( home_url( '/'  ) ) . '" class="search-form rounded-theme" id="searchform" autocomplete="off">
                  <input type="search"  class="search-input style-none size-lg" name="s" placeholder="'.esc_attr__('Search popular products...','ignavo').'" autocomplete="off"/>
                  <button type="submit" class="search-button style-none">
                   <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                        <path d="M10.5 19C15.1944 19 19 15.1944 19 10.5C19 5.80558 15.1944 2 10.5 2C5.80558 2 2 5.80558 2 10.5C2 15.1944 5.80558 19 10.5 19Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
                        <path d="M22 22L17 17" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
                      </svg>
                  </button>
				  <input type="hidden" name="post_type" value="product" />
                </form>';
		  
	return $form;
}

function ignavo_header_product_search() {
	$terms = get_terms( array(
		'taxonomy' => 'product_cat',
		'hide_empty' => true,
		'parent'    => 0,
	) );

	$form = '';
	
	$form .= '<form action="' . esc_url( home_url( '/'  ) ) . '" class="search-form rounded-theme" id="searchform" autocomplete="off">';
	$form .= '<input type="search"  class="search-input style-none size-lg" name="s" placeholder="'.esc_attr__('Search popular products...','ignavo').'" autocomplete="off"/>';
	$form .= '<button type="submit" class="search-button style-none">';
	$form .= '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">';
	$form .= '<path d="M10.5 19C15.1944 19 19 15.1944 19 10.5C19 5.80558 15.1944 2 10.5 2C5.80558 2 2 5.80558 2 10.5C2 15.1944 5.80558 19 10.5 19Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>';
	$form .= '<path d="M22 22L17 17" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>';
	$form .= '</svg>';
	$form .= '</button>';
	$form .= '<input type="hidden" name="post_type" value="product" />';
	$form .= '</form>';
	
	if(function_exists('ignavo_get_most_popular_keywords') && ignavo_get_most_popular_keywords()){
		$form .= '<div class="site-search-tags">';
		$form .= ignavo_get_most_popular_keywords();
		$form .= '</div>';
	}
		
	return $form;
	
}

/*************************************************
## Ignavo Gallery Thumbnail Size
*************************************************/ 
add_filter( 'woocommerce_get_image_size_gallery_thumbnail', function( $size ) {
    return array(
        'width' => 90,
        'height' => 54,
        'crop' => 0,
    );
} );


/*************************************************
## Quick View Scripts
*************************************************/ 

function ignavo_quick_view_scripts() {
  	wp_enqueue_script( 'ignavo-quick-ajax', get_template_directory_uri() . '/assets/js/custom/quick_ajax.js', array('jquery'), '1.0.0', true );
  	wp_enqueue_script( 'ignavo-tab-ajax', get_template_directory_uri() . '/assets/js/custom/tab-ajax.js', array('jquery'), '1.0.0', true );
	wp_localize_script( 'ignavo-quick-ajax', 'MyAjax', array(
		'ajaxurl' => esc_url(admin_url( 'admin-ajax.php' )),
	));
  	wp_enqueue_script( 'ignavo-variationform', get_template_directory_uri() . '/assets/js/custom/variationform.js', array('jquery'), '1.0.0', true );
	wp_enqueue_script( 'wc-add-to-cart-variation' );
}
add_action( 'wp_enqueue_scripts', 'ignavo_quick_view_scripts' );

/*************************************************
## Quick View CallBack
*************************************************/
add_action( 'wp_ajax_nopriv_quick_view', 'ignavo_quick_view_callback' );
add_action( 'wp_ajax_quick_view', 'ignavo_quick_view_callback' );
function ignavo_quick_view_callback() {

	$id = intval( $_POST['id'] );
	$loop = new WP_Query( array(
		'post_type' => 'product',
		'p' => $id,
	  )
	);
	
	while ( $loop->have_posts() ) : $loop->the_post(); 
	$product = new WC_Product(get_the_ID());
	
	$rating = wc_get_rating_html($product->get_average_rating());
	$price = $product->get_price_html();
	$rating_count = $product->get_rating_count();
	$review_count = $product->get_review_count();
	$average      = $product->get_average_rating();
	$product_image_ids = $product->get_gallery_attachment_ids();

	$output = '';
	
	
		$output .= '<div class="quickview white-popup">';
		$output .= '<div class="quick-view-product-wrapper">';
		$output .= '<div class="single-product-wrapper">';
		$output .= '<div class="product">';
		
		 ob_start();
			do_action( 'ignavo_single_header_top' );
			$output .= ob_get_clean(); 
		
		$output .= '<div class="product-body">';
		
		if (  (function_exists('has_post_thumbnail')) && (has_post_thumbnail())  ) {
			$att=get_post_thumbnail_id();
			$image_src = wp_get_attachment_image_src( $att, 'full' );
			$image_src = $image_src[0];
			
			$output .= '<div class="column single-product-gallery">';
			$output .= '<div class="site-slider-wrapper relative">';
			$output .= '<div class="site-slider swiper carousel-for-mobile" data-speed="700" data-items="1" data-items-tablet="1" data-items-mobile="1" data-slides-per-group="1" data-slides-per-group-tablet="1" data-slides-per-group-mobile="1"  data-direction="horizontal"  data-loop="false"  data-dots-click="true" data-simulate-touch="true" data-mousewheel="false">';
			$output .= '<div class="swiper-wrapper">';
			$output .= '<div class="swiper-slide"><img src="'.esc_url($image_src).'" /></div>';
			
			foreach( $product_image_ids as $product_image_id ){
			$image_url = wp_get_attachment_url( $product_image_id );
				$output .= '<div class="swiper-slide"><img src="'.esc_url($image_url).'" /></div>';
			} 	
			
			$output .= '</div>';
			$output .= '</div>';
			$output .= '</div>';
			$output .= '</div><!-- column -->';
			
		}	  
		$output .= '<div class="column product-detail-column">';
		$output .= '<div class="product-detail-inner">';
            ob_start();
			do_action( 'woocommerce_single_product_summary' );
			$output .= ob_get_clean();     
		$output .= '</div>';
		$output .= '</div>';
		$output .= '</div>';
		$output .= '</div>';
		$output .= '</div>';
		$output .= '</div>';
		$output .= '</div>';

		endwhile; 
		wp_reset_postdata();

	 	$output_escaped = $output;
	 	echo $output_escaped;
		
		wp_die();
}


/*************************************************
## Ignavo Filter by Attribute
*************************************************/ 
function ignavo_woocommerce_layered_nav_term_html( $term_html, $term, $link, $count ) { 

	$attribute_label_name = wc_attribute_label($term->taxonomy);;
	$attribute_id = wc_attribute_taxonomy_id_by_name($attribute_label_name);
	$attr  = wc_get_attribute($attribute_id);
	$array = json_decode(json_encode($attr), true);

	if($array['type'] == 'color'){
		$color = get_term_meta( $term->term_id, 'product_attribute_color', true );
		$term_html = '<div class="type-color"><span class="color-box" style="background-color:'.esc_attr($color).';"></span>'.$term_html.'</div>';
	}
	
	if($array['type'] == 'button'){
		$term_html = '<div class="type-button"><span class="button-box"></span>'.$term_html.'</div>';
	}

    return $term_html; 
}; 
         
add_filter( 'woocommerce_layered_nav_term_html', 'ignavo_woocommerce_layered_nav_term_html', 10, 4 ); 


/*************************************************
## Shop Width Body Classes
*************************************************/
function ignavo_body_classes( $classes ) {

	if( get_theme_mod('ignavo_shop_width') == 'wide' || ignavo_get_option() == 'wide' && is_shop()) { 
		$classes[] = 'shop-wide';
	}elseif( get_theme_mod('ignavo_single_full_width') == 1 || ignavo_get_option() == 'wide' && is_product()) { 
		$classes[] = 'shop-wide';
	} else {
		$classes[] = '';
	}
	
	return $classes;
}
add_filter( 'body_class', 'ignavo_body_classes' );

/*************************************************
## Stock Availability Translation
*************************************************/ 
if(get_theme_mod('ignavo_stock_quantity',0) != 1){
add_filter( 'woocommerce_get_availability', 'ignavo_custom_get_availability', 1, 2);
function ignavo_custom_get_availability( $availability, $_product ) {
    
    // Change In Stock Text
    if ( $_product->is_in_stock() ) {
        $availability['availability'] = esc_html__('In Stock', 'ignavo');
    }
    // Change Out of Stock Text
    if ( ! $_product->is_in_stock() ) {
        $availability['availability'] = esc_html__('Out of stock', 'ignavo');
    }
    return $availability;
}
}

/*************************************************
## Archive Description After Content
*************************************************/
if(get_theme_mod('ignavo_category_description_after_content',0) == 1){
	remove_action('woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10);
	remove_action('woocommerce_archive_description', 'woocommerce_product_archive_description', 10);
	add_action('ignavo_after_main_shop', 'woocommerce_taxonomy_archive_description', 5);
	add_action('ignavo_after_main_shop', 'woocommerce_product_archive_description', 5);
}

/*************************************************
## Catalog Mode - Disable Add to cart Button
*************************************************/
if(get_theme_mod('ignavo_catalog_mode', 0) == 1 || ignavo_get_option() == 'catalogmode'){ 
	add_filter( 'woocommerce_loop_add_to_cart_link', 'ignavo_remove_add_to_cart_buttons', 1 );
	function ignavo_remove_add_to_cart_buttons() {
		return false;
	}
	remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 40);
}

/*************************************************
## Related Products with Tags
*************************************************/
if(get_theme_mod('ignavo_related_by_tags',0) == 1){
	add_filter( 'woocommerce_product_related_posts_relate_by_category', '__return_false' );
}

/*************************************************
## Product Specification Tab
*************************************************/ 
add_filter( 'woocommerce_product_tabs', 'ignavo_product_specification_tab' );
function ignavo_product_specification_tab( $tabs ) {
	$specification = get_post_meta( get_the_ID(), 'klb_product_specification', true );
	
	// Adds the new tab
	if($specification){
		$tabs['specification'] = array(
			'title' 	=> esc_html__( 'Specification', 'ignavo' ),
			'priority' 	=> 15,
			'callback' 	=> 'ignavo_product_specification_tab_content'
		);
	}
	
	return $tabs;
}
function ignavo_product_specification_tab_content() {
	$specification = get_post_meta( get_the_ID(), 'klb_product_specification', true );
	echo '<div class="specification-content">'.ignavo_sanitize_data($specification).'</div>';
}


/*************************************************
## Partdo WooCommerce Product Attributes
*************************************************/ 
if(!function_exists('ignavo_part_compatibility')){
	function ignavo_part_compatibility(){
		
		if(get_theme_mod('ignavo_header_attribute_search_toggle', 0) != 1){
			return;
		}
		
		global $product;
		$attributes = $product->get_attributes();
		
		$reorder_single = get_theme_mod( 'ignavo_shop_single_reorder', 
			array( 
				'woocommerce_template_single_excerpt',
				'woocommerce_template_single_price', 
				'ignavo_people_added_in_cart', 
				'woocommerce_template_single_add_to_cart', 
				'ignavo_single_product_extra',
				'ignavo_single_product_assistant',
				'ignavo_social_share',
				'woocommerce_template_single_meta', 
				
			) 
		);

		$key = array_search('woocommerce_template_single_add_to_cart', $reorder_single);

		if ($key !== false) {
			$theorder = ( $key + 1 ) * 7;
		} else {
			$theorder = 30;
		}

		if ( isset($_COOKIE['selected_attributes']) ) {
			$json = stripslashes($_COOKIE['selected_attributes']);
			$selected = json_decode($json, true);
		} else{
			
			add_action( 'woocommerce_single_product_summary', 'ignavo_if_fit_your_vehicle', $theorder-1 );
			
			return;
		}

		$all_exist = true;

		foreach ( $selected as $selected_key => $selected_value ) {
			$attribute_matched_all = false;

			foreach ( $attributes as $attribute ) {
				if ( $attribute->get_name() === $selected_key ) {
					// Ürünün sahip olduğu terimler (örn: ['audi', 'a3'])
					$product_terms = wc_get_product_terms( $product->get_id(), $selected_key, array( 'fields' => 'slugs' ) );

					// Cookie'deki değerler (örn: ['audi', 'a4'])
					$selected_values = array_map( 'trim', explode( ',', $selected_value ) );

					// Tüm selected değerleri product_terms içinde mi?
					$diff = array_diff( $selected_values, $product_terms );

					if ( empty($diff) ) {
						$attribute_matched_all = true;
					}

					break;
				}
			}

			if ( ! $attribute_matched_all ) {
				$all_exist = false;
				break;
			}
		}


		
		if ( $all_exist ) {
			add_action( 'woocommerce_single_product_summary', 'ignavo_fit_your_vehicle', $theorder-1 );
		} else {
			
			add_action( 'woocommerce_single_product_summary', 'ignavo_does_not_fit_your_vehicle', $theorder-1 );
		}
		
		?>

			
		<?php
	}
}
add_action('woocommerce_single_product_summary','ignavo_part_compatibility', 10);
if(!function_exists('ignavo_fit_your_vehicle')){
	function ignavo_fit_your_vehicle(){
		if ( class_exists( 'KlbGarage' ) ) {
			echo '<div class="vehicle-test fit">';
			echo '<p>'.sprintf(esc_html__('Fits a "%s"','ignavo'), '<span>'.KlbGarage::instance()->selected_vehicle('text').'</span>').'</p>';
			echo '</div>';
		}
	}
}

if(!function_exists('ignavo_does_not_fit_your_vehicle')){
	function ignavo_does_not_fit_your_vehicle(){
		echo '<div class="vehicle-test notfit">';
		echo '<p>'.esc_html__('Does not fit your vehicle', 'ignavo').'</p> ';
		echo '<div class="quick-icon">'.esc_html__('Change Vehicle', 'ignavo').'</div>';
		echo '</div>';
	}
}
if(!function_exists('ignavo_if_fit_your_vehicle')){
	function ignavo_if_fit_your_vehicle(){
		echo '<div class="vehicle-test check">';
		echo '<div class="quick-icon">'.esc_html__('Check', 'ignavo').'</div>';
		echo '<p>'.esc_html__('if this fits your vehicle.', 'ignavo').'</p> ';
		echo '</div>';
	}
}

/*************************************************
## Get Total Reviews Count
*************************************************/
if(!function_exists('ignavo_get_total_woocommerce_reviews_count')){
	function ignavo_get_total_woocommerce_reviews_count() {
		global $wpdb;

		$total_reviews = $wpdb->get_var("
			SELECT COUNT(*) 
			FROM $wpdb->comments 
			WHERE comment_approved = '1' 
			AND comment_type = 'review'
		");

		return intval($total_reviews);
	}
}

/*************************************************
## Get Average Rating
*************************************************/
if (!function_exists('ignavo_get_average_rating_all_products')) {
	function ignavo_get_average_rating_all_products() {
		global $wpdb;

		$average = $wpdb->get_var("
			SELECT AVG(CAST(meta_value AS DECIMAL(10,2)))
			FROM $wpdb->postmeta
			WHERE meta_key = '_wc_average_rating'
			AND meta_value > 0
		");

		if (!$average) return '0%';

		$percentage = (floatval($average) / 5) * 100;

		return round(floatval($average), 2); // 5 üzerinden ortalama puan
	}
}

} // is woocommerce activated

?>