File "woocommerce.php"

Full Path: /home/elegucvf/public_html/video/wp-content/themes/atlas/functions/plugin-integration/woocommerce.php
File size: 12.09 KB
MIME-type: text/x-php
Charset: utf-8

<?php
/**
 * Plugin woocommerce integration
 *
 * @package Atlas
 */

if ( ! defined( 'ABSPATH' ) ) {
	 exit; // Exit if accessed directly
}

if ( TH90_WOOCOMMERCE_IS_ACTIVE ) {
	/* Add new class to product */
	if ( ! function_exists( 'th90_woo_add_class_product' ) ) {
		function th90_woo_add_class_product( $classes, $product ) {

		    $classes[] = 'post-item';

		    return $classes;
		}
		add_filter( 'woocommerce_post_class', 'th90_woo_add_class_product', 10, 2 );
		add_filter( 'product_cat_class', 'th90_woo_add_class_product', 10, 3 );

	}

	/* Icon Fonts */
	if ( ! function_exists( 'th90_woo_icons' ) ) {

		function th90_woo_icons() {
	        ob_start();
			?>
			@font-face {
				font-family: 'woo';
				font-style: normal;
				font-weight: 400;
				font-display: swap;
				src: url(data:application/octet-stream;base64,d09GMgABAAAAAAX4AAsAAAAAC+QAAAWrAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGVgCEIAqHOIZXATYCJAMoCxYABCAFhioHgTkbpQpRlE9OiuxHYdz4lLiUxU7ay6EmHlojvov/3NR84uH/9/u2z733+ZjWGcwSi6gRr0RLP2GJTCgkT1oqqZDGNJJmc1n6a2ePhJ55v7f0xjI+W97zjGzvSL5GWNARnAJoAA4MQKG54fNe86GmstNkGfxQ0cnIk6hg8+Ek37dfq39PoraLd6ikSGvz5+vuoKIlcAkJlWRinVAondcJpfMYzgOvsNaBvvo1Ar1rrozfffTig1oemZLUpklidpD0jlGojZpdZCkNntCm1hWnlhtj31Sk/5lVyp8gUrqpzuJwcVUmTnz08qFTNzuvjrnyHSNP5auAeTcZl04nJ35UFn2XI34poL5qYPGKMmeVfouy82qnvzvc+7L362D0Ze948pg7OWE7uQgc5mSTUmsuN6NzJv95skLUiMbA/l50N1jVMdTs9GNo2B3GEOx9iaFl71cMHQcjeVvs8B/EUHE8GUPmmNNeT+px7znKFBWJ+Dux36P0mvAkWchJu3vYGJtrVEZiU39HrdbJXufVNIskdI9h2b0Ciu5RIHgLEYASltAf6LPg9hP18D4j89kDCt3IwZ7ySrVFb0VVW3FeZVleTkl5TpRRCVtnINDzKnXXxYXUprM+Ity9nzC8z/uUkRV5dmXFiNu2gyTJ7XcQ4Zbt1gBLyMh+GIp2B5KkQkLgTKJtlxvYHunCsLwSdwFUVQHyRmQsBXd89fCxKAoiExRzpffI4JMWJbpKfLZY4Rz/SODZysYklwSIVJBVaHQTGPPGTGD+YzgsyxgKQjoESAC4OcJl021Uc2ZmM9VmrsCHOHAbZV5Y5lQizzMMz3sDCUO547jNIxt3rQWPi20WuNJ1ZQvdw0svdS9oW0Bg1+Jbizh/izVh+xolEESQmbpk0+K4l52hn07s/uaE7yR4EEHmZxAvP4WUl7+4fHSOvjaxR+9x0Pqj1XaPsoCdq5JnE0UxcTZ51c6AWMv7Vh+tL1jqexJrh9v/XzQqpPyQadGYfiZ6ILL7woXuyIHoGYfxIlPkRxWuqnBnA7q6AlglIrDznz80kyKGMAyB1/7+w6wl+hIRb8DStUywcUn8kthFIBiH3FHgQwzpTzYu2bWgxW7SfXJ5XXdGlvqHJ9rpHD/Gj40Y5ll1Y6EnHzsldhca5i7vGqHWExBQfmG3WLK5J99YyKqbhbMFG+/+k58yvFdOvChFDr5rs93ZpLpamq6tu5M8TNIlFpbVA3vzw4rC36jyvLDBvenyEguSLt/+Tm0dTdfVsknZ7r5re6UXmMkqYugaIdLVC0ELrE5J16k3JTtV1ag2qWyAFAZI+TCk5N2E/8bv5rvxa19XLv635Bd53j//1AYaX3Mr0VntonlpH7/gOqT2DTPS2v+p5LaJt7eIfuC4b3XZjL/cKV3nBkIn1SQ0acyEZp1lVuwroZXBxdBa53po75XrnQazfsiidC5TfgML+5/QZMIWz9uUEUjFEbOhlYXY5HWVfSe0tzZ2+7jBmbT1DmPoP7U5cchC33dYd8hw1oD6T8gSYC7sVYctZRQwdFMIAgYEC2Svntpg0pI7bBESdgob0lIGhCADKRj9L4mtTAJIppXZFKQBWDa+oAOfGRxKqJO1CjDJZQq6SHxHsFTQLqU52972OfX4AOXK5qjeQVHQ95SVJVywB2xeWa2DGNw0BbJPBUzmiEsD9lQOWVVKA9cctkwGGkCggkWZ9wY2UKIJJO5gFoIG1FGoyKCGpmKA5kVigCUozhuilkxMCC8HCYdRgeABYMkvuAPyjR7gmkRQu0vhU6TUjNXUHawSNvBqUdBWpL9xZhtZUpIT7ETVBafEz1L/R08hvquPFDlKVFFHE2100cdg+hllQW0DW0LtA9FcNIE0hYRzUgwXlQihy3zTzgk3/dYMc+5pp4uSloJtJafTzMVGdQNl47SDrI4rNi/jALVFTGcqBQ==);
			}
			<?php
	        return ob_get_clean();
	    }
	}

	/* Enqueue Custom Woo CSS */
	if ( ! function_exists( 'th90_woo_custom_enqueue_style' ) ) {
		function th90_woo_custom_enqueue_style() {
			if ( ! is_admin() ) {
				wp_dequeue_style( 'woocommerce-general' );
				wp_dequeue_style( 'woocommerce-layout' );
				wp_dequeue_style( 'woocommerce-smallscreen' );

				if ( is_rtl() ) {
					wp_enqueue_style( 'th90-woocommerce', get_template_directory_uri() . '/scss/woocommerce/css/woocommerce-rtl.css' );
				} else {
					wp_enqueue_style( 'th90-woocommerce', get_template_directory_uri() . '/scss/woocommerce/css/woocommerce.css' );
				}

				wp_add_inline_style( 'th90-woocommerce', wp_unslash( th90_minify_css( th90_woo_icons() ) ) );
			}
		}
	}
	add_action( 'wp_enqueue_scripts', 'th90_woo_custom_enqueue_style' );

	/* Remove Breadcrumb */
	remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 );

	/* Remove Sidebar */
	remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );

	/* Product Per Page */
	if ( ! function_exists( 'th90_loop_shop_per_page' ) ) {
		function th90_loop_shop_per_page( $cols ) {
			if ( th90_opt( 'shop_number' ) ) {
				return absint( th90_opt( 'shop_number' ) );
			}
			return;
		}
	}
	add_filter( 'loop_shop_per_page', 'th90_loop_shop_per_page' );

	/* Shop page title & Desc */
	add_filter( 'woocommerce_show_page_title', function() {  get_template_part( 'template-parts/page', 'title' ); } );
	remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10 );
	remove_action( 'woocommerce_archive_description', 'woocommerce_product_archive_description', 10 );

	/* Products pagination */
	remove_action( 'woocommerce_after_shop_loop', 'woocommerce_pagination', 10 );
	add_action( 'woocommerce_after_shop_loop', function() {
		th90_numeric_pagination( false, '<div class="nav-wrap nav-wrap-numeric text-center"><div class="nav-wrap-inner">', '</div></div>' );
	}, 10 );

	/* Wrapper Start */
	remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 );
	add_action( 'woocommerce_before_main_content', function() {
		?>
		<div id="primary" class="content-area">
			<div class="container">
				<div class="section-inner">
					<main id="main" class="site-main" role="main">
						<div class="main-area<?php echo esc_attr( th90_box() ); ?>">
		<?php
	}, 10 );

	/* Wrapper End */
	remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10 );
	add_action( 'woocommerce_after_main_content', function() {
		?>
						</div>
					</main>
					<?php get_sidebar(); ?>
				</div>
			</div>
		</div>
		<?php
	}, 10 );

	/* Category */
	add_action( 'woocommerce_before_subcategory', function() {
		?>
		<div class="entry-thumbnail">
		<?php
	}, 11 );
	add_action( 'woocommerce_before_subcategory_title', function() {
		?>
		</div>
		<?php
	}, 11 );

	/* Product */
	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 );

	// Product Start
	add_action( 'woocommerce_before_shop_loop_item', function() {
		echo '<div class="woo-product">';
	}, 5 );

	// Product Thumbnail & Add to Cart
	add_action( 'woocommerce_before_shop_loop_item_title', function() {
		?>
		<div class="entry-thumbnail">
		<?php
	}, 5 );
	add_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_link_open', 6 );
	add_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_link_close', 14 );
	add_action( 'woocommerce_before_shop_loop_item_title', function() {
		?>
		</div>
		<?php
	}, 15 );

	// Product Title
	remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10 );
	add_action( 'woocommerce_shop_loop_item_title', function() {
		?>
		<h2 class="entry-title <?php echo esc_attr( th90_convert_tag( th90_opt( 'product_title_tag') ) ); ?>">
		   <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
	   </h2>
	   <?php
	}, 10 );

	// Product Rating Stars
	remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 5 );
	add_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_rating', 5 );

	// Product Desc Start
	add_action( 'woocommerce_before_shop_loop_item_title', function() {
		?>
		<div class="woo-desc post-desc">
			<div class="post-desc-inner">
		<?php
	}, 15 );

	// Product Desc End
	add_action( 'woocommerce_after_shop_loop_item', function() {
		echo '</div></div>';
	}, 15 );

	// Product End
	add_action( 'woocommerce_after_shop_loop_item', function() {
		echo '</div>';
	}, 20 );

	// Product Category Desc Start
	add_action( 'woocommerce_shop_loop_subcategory_title', function() {
		?>
		<div class="woo-desc post-desc">
		<?php
	}, 5 );

	// Product Category Desc End
	add_action( 'woocommerce_shop_loop_subcategory_title', function() {
		echo '</div>';
	}, 15 );

	/* Single Product */
	add_action( 'woocommerce_product_thumbnails', function() {
		?>
		<div class="thumbs-wrap">
			<div class="thumbs-wrap-inner">
		<?php
	}, 10 );
	add_action( 'woocommerce_product_thumbnails', function() {
		?>
			</div>
		</div>
		<?php
	}, 20 );

	add_action( 'woocommerce_before_single_product_summary', function() {
		echo '<div class="summary-wrap">';
			echo '<div class="summary-wrap-inner">';
	}, 5 );
	add_action( 'woocommerce_after_single_product_summary', function() {
		echo '</div>';
			echo '</div>';
	}, 5 );

	// Single Product Title
	remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
	add_action( 'woocommerce_single_product_summary', function() {
		the_title( '<h1 class="page-title"><span class="entry-title">', '</span></h1>' );
	}, 5 );

	// Plus Minus Quantity
	add_action( 'woocommerce_before_quantity_input_field', function() {
		echo '<span class="arrow minus minus-btn is-link">-</span>';
	}, 5 );
	add_action( 'woocommerce_after_quantity_input_field', function() {
		echo '<span class="arrow plus plus-btn is-link">+</span>';
	}, 5 );

	// Remove tabs heading
	add_filter('woocommerce_product_description_heading', '__return_null');
	add_filter('woocommerce_product_additional_information_heading', '__return_null');

	/* Product Images/Gallery */
	add_theme_support( 'wc-product-gallery-zoom' );
	add_filter( 'woocommerce_get_image_size_gallery_thumbnail', function( $size ) {
		return array(
			'width' => 300,
			'height' => 300,
			'crop' => 1,
		);
	} );
	add_filter( 'woocommerce_product_thumbnails_columns', function() {
		return absint( th90_opt( 'product_gallery_thumb' ) );
	}, 10, 1 );

	/* Product Shares */
	add_action( 'woocommerce_share', function() {
		$social_shares_args = array(
			'options_sufix' => 'post',
			'style' => 'simple',
		);
		echo '<div class="single-shares_bottom">';
			echo '<div class="head-shares">' . esc_html__( 'Shares:', 'atlas' ). '</div>';
			th90_the_social_shares( $social_shares_args );
		echo '</div>';
	}, 5 );

	/* WooCommerce update Cart counter */
	if( ! function_exists( 'th90_wc_cart_items_number' )){

		add_filter( 'woocommerce_add_to_cart_fragments', 'th90_wc_cart_items_number' );
		function th90_wc_cart_items_number( $fragments ){
			$output = '';
			$output .= '<span class="shopping-cart-counter count-' . WC()->cart->get_cart_contents_count() . '">';
			$output .= WC()->cart->get_cart_contents_count();
			$output .= '</span>';
			$fragments['.shopping-cart-counter '] = $output;
			return $fragments;
		}
	}

	/* Change Sale To Percentage */
	add_filter( 'woocommerce_sale_flash', 'th90_wc_sale_to_percentage', 20, 3 );
	function th90_wc_sale_to_percentage( $html, $post, $product ) {

		if( $product->is_type('variable')){
			$percentages = array();

			// Get all variation prices
			$prices = $product->get_variation_prices();

			// Loop through variation prices
			foreach( $prices['price'] as $key => $price ){
				// Only on sale variations
				if( $prices['regular_price'][$key] !== $price ){
				  	// Calculate and set in the array the percentage for each variation on sale
				  	$percentages[] = round( 100 - ( floatval($prices['sale_price'][$key]) / floatval($prices['regular_price'][$key]) * 100 ) );
				}
			}
			// We keep the highest value
			$percentage = max($percentages) . '%';

		} elseif( $product->is_type('grouped') ){
			$percentages = array();

			// Get all variation prices
			$children_ids = $product->get_children();

			// Loop through variation prices
			foreach( $children_ids as $child_id ){
			  	$child_product = wc_get_product($child_id);

			  	$regular_price = (float) $child_product->get_regular_price();
			  	$sale_price    = (float) $child_product->get_sale_price();

			  	if ( $sale_price != 0 || ! empty($sale_price) ) {
			      	// Calculate and set in the array the percentage for each child on sale
			      	$percentages[] = round(100 - ($sale_price / $regular_price * 100));
			  	}
			}
			// We keep the highest value
			$percentage = max($percentages) . '%';

		} else {
			$regular_price = (float) $product->get_regular_price();
			$sale_price    = (float) $product->get_sale_price();

			if ( $sale_price != 0 || ! empty($sale_price) ) {
		  		$percentage    = round(100 - ($sale_price / $regular_price * 100)) . '%';
			} else {
		  		return $html;
			}
		}
		return '<span class="meta_btn onsale">' . $percentage . '</span>';
	}
}