File: /home/storage/f/44/55/novoprovisorio2/public_html/wp-content/themes/thegem/inc/woocommerce.php
<?php
function thegem_woocommerce_scripts() {
if(thegem_is_plugin_active('woocommerce/woocommerce.php')) {
wp_enqueue_style('thegem-woocommerce-minicart', get_template_directory_uri() . '/css/thegem-woocommerce-minicart.css');
wp_register_style('thegem-woocommerce', get_template_directory_uri() . '/css/thegem-woocommerce.css');
wp_register_style('thegem-woocommerce1', get_template_directory_uri() . '/css/thegem-woocommerce1.css');
wp_register_style('thegem-woocommerce-temp', get_template_directory_uri() . '/css/thegem-woocommerce-temp.css');
wp_register_style('thegem-woocommerce-custom', get_template_directory_uri() . '/css/thegem-woocommerce-custom.css');
if (thegem_is_woocommerce_page() || thegem_is_wishlist_page()) {
thegem_enqueue_woocommerce_styles();
}
if ( thegem_is_wishlist_page()) {
wp_enqueue_style('yith-wcwl-user-main');
}
wp_register_script('thegem-checkout', get_template_directory_uri() . '/js/thegem-checkout.js', array('jquery'));
wp_register_script('thegem-woocommerce', get_template_directory_uri() . '/js/thegem-woocommerce.js', array('jquery', 'thegem-gallery'), '', true);
wp_localize_script('thegem-woocommerce', 'thegem_woo_data', array(
'ajax_url' => esc_url(admin_url('admin-ajax.php')),
'ajax_nonce' => wp_create_nonce('product_quick_view_ajax_security'),
));
if(is_woocommerce()) {
wp_enqueue_script('thegem-woocommerce');
if (thegem_get_option('products_pagination', 'normal') == 'scroll') {
wp_enqueue_script('thegem-scroll-monitor');
}
if (in_array(thegem_get_option('products_pagination', 'normal'), array('more', 'scroll'))) {
wp_enqueue_style('thegem-animations');
wp_enqueue_script('thegem-items-animations');
}
}
}
}
add_action('wp_enqueue_scripts', 'thegem_woocommerce_scripts');
function thegem_enqueue_woocommerce_styles() {
wp_enqueue_style('thegem-woocommerce');
wp_enqueue_style('thegem-woocommerce1');
wp_enqueue_style('thegem-woocommerce-temp');
wp_enqueue_style('thegem-woocommerce-custom');
}
function thegem_is_woocommerce_page() {
return function_exists('is_woocommerce') && (is_woocommerce() || is_cart() || is_checkout() || is_account_page() || is_product_category());
}
function thegem_get_cart_count() {
return empty(WC()->cart) ? 0 : (thegem_get_option('cart_label_count') ? WC()->cart->cart_contents_count : sizeof(WC()->cart->get_cart()));
}
function thegem_is_wishlist_page() {
return (function_exists('yith_wcwl_is_wishlist') && yith_wcwl_is_wishlist()) || (function_exists('yith_wcwl_is_wishlist_page') && yith_wcwl_is_wishlist_page());
}
add_action('add_meta_boxes', 'thegem_add_product_settings_boxes');
function thegem_add_product_settings_boxes() {
add_meta_box('thegem_product_description_meta_box', esc_html__('Product Description', 'thegem'), 'thegem_product_description_settings_box', 'product', 'normal', 'high');
add_meta_box('thegem_product_hover_meta_box', esc_html__('Product Hover', 'thegem'), 'thegem_product_hover_settings_box', 'product', 'side', 'high');
}
function thegem_product_description_settings_box($post) {
wp_nonce_field('thegem_product_description_settings_box', 'thegem_product_description_settings_box_nonce');
$product_description = get_post_meta($post->ID, 'thegem_product_description', true);
?>
<div class="inside">
<?php wp_editor(htmlspecialchars_decode($product_description), 'thegem_product_description', array(
'textarea_name' => 'thegem_product_description',
'quicktags' => array('buttons' => 'em,strong,link'),
'tinymce' => array(
'theme_advanced_buttons1' => 'bold,italic,strikethrough,separator,bullist,numlist,separator,blockquote,separator,justifyleft,justifycenter,justifyright,separator,link,unlink,separator,undo,redo,separator',
'theme_advanced_buttons2' => '',
),
'editor_css' => '<style>#wp-excerpt-editor-container .wp-editor-area{height:175px; width:100%;}</style>'
)); ?>
</div>
<?php
}
function thegem_product_hover_settings_box($post) {
wp_nonce_field('thegem_product_hover_settings_box', 'thegem_product_hover_settings_box_nonce');
$product_hover = get_post_meta($post->ID, 'thegem_product_disable_hover', true);
?>
<div class="inside">
<input name="thegem_product_disable_hover" type="checkbox" id="thegem_product_disable_hover" value="1" <?php checked($product_hover, 1); ?> />
<label for="thegem_product_disable_hover"><?php esc_html_e('Disable hover with alternative product image', 'thegem'); ?></label>
</div>
<?php
}
function thegem_save_product_data($post_id) {
if(!isset($_POST['thegem_product_description_settings_box_nonce']) || !isset($_POST['thegem_product_hover_settings_box_nonce'])) {
return;
}
if(!wp_verify_nonce($_POST['thegem_product_description_settings_box_nonce'], 'thegem_product_description_settings_box') || !wp_verify_nonce($_POST['thegem_product_hover_settings_box_nonce'], 'thegem_product_hover_settings_box')) {
return;
}
if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if(isset($_POST['post_type']) && $_POST['post_type'] == 'product') {
if(!current_user_can('edit_page', $post_id)) {
return;
}
} else {
if(!current_user_can('edit_post', $post_id)) {
return;
}
}
if(isset($_POST['thegem_product_description'])) {
update_post_meta($post_id, 'thegem_product_description', $_POST['thegem_product_description']);
}
update_post_meta($post_id, 'thegem_product_disable_hover', isset($_POST['thegem_product_disable_hover']));
}
add_action('save_post', 'thegem_save_product_data');
add_filter('woocommerce_enqueue_styles', '__return_false');
function thegem_loop_shop_columns($count) {
$item_data = array(
'sidebar_position' => '',
);
$item_data = thegem_get_post_data($item_data, 'page', wc_get_page_id('shop'));
$sidebar_position = thegem_check_array_value(array('', 'left', 'right'), $item_data['sidebar_position'], '');
if(is_active_sidebar('shop-sidebar') && $sidebar_position) {
return 3;
}
return 4;
}
add_filter('loop_shop_columns', 'thegem_loop_shop_columns');
function thegem_woocommerce_single_product_gallery() {
global $post, $product;
wp_enqueue_style('thegem-hovers');
wp_enqueue_script('thegem-gallery');
$attachments_ids = array();
if(has_post_thumbnail()) {
$attachments_ids = array(get_post_thumbnail_id());
}
$attachments_ids = array_merge($attachments_ids, $product->get_gallery_image_ids());
if('variable' === $product->get_type()) {
foreach($product->get_available_variations() as $variation) {
if(has_post_thumbnail($variation['variation_id'])) {
$thumbnail_id = get_post_thumbnail_id($variation['variation_id']);
if(!in_array($thumbnail_id, $attachments_ids)) {
$attachments_ids[] = $thumbnail_id;
}
}
}
}
if(empty($attachments_ids)) return ;
$gallery_uid = uniqid();
echo '<div class="preloader"><div class="preloader-spin"></div></div>';
echo '<div class="gem-gallery gem-gallery-hover-default">';
foreach($attachments_ids as $attachments_id) {
if(thegem_get_option('woocommerce_activate_images_sizes')) {
$thumb_image_url = thegem_get_thumbnail_src($attachments_id, 'thegem-product-thumbnail');
$preview_image_url = thegem_get_thumbnail_src($attachments_id, 'thegem-product-single');
} else {
$thumb_image_url = wp_get_attachment_image_src($attachments_id, apply_filters('single_product_small_thumbnail_size', 'shop_thumbnail'));
$preview_image_url = wp_get_attachment_image_src($attachments_id, apply_filters('single_product_large_thumbnail_size', 'shop_single'));
}
$full_image_url = wp_get_attachment_image_src($attachments_id, 'full');
?>
<div class="gem-gallery-item" data-image-id="<?php echo esc_attr($attachments_id); ?>">
<div class="gem-gallery-item-image">
<a href="<?php echo esc_url($preview_image_url[0]); ?>" data-fancybox-group="product-gallery-<?php echo esc_attr($gallery_uid); ?>" data-full-image-url="<?php echo esc_url($full_image_url[0]); ?>">
<svg width="20" height="10"><path d="M 0,10 Q 9,9 10,0 Q 11,9 20,10" /></svg>
<img src="<?php echo esc_url($thumb_image_url[0]); ?>" alt="" class="img-responsive">
</a>
</div>
</div>
<?php
}
echo '</div>';
}
function thegem_woocommerce_single_product_quick_view_gallery() {
global $post, $product;
wp_enqueue_style('thegem-hovers');
wp_enqueue_script('thegem-gallery');
$attachments_ids = array();
if(has_post_thumbnail()) {
$attachments_ids = array(get_post_thumbnail_id());
}
$attachments_ids = array_merge($attachments_ids, $product->get_gallery_image_ids());
if('variable' === $product->get_type()) {
foreach($product->get_available_variations() as $variation) {
if(has_post_thumbnail($variation['variation_id'])) {
$thumbnail_id = get_post_thumbnail_id($variation['variation_id']);
if(!in_array($thumbnail_id, $attachments_ids)) {
$attachments_ids[] = $thumbnail_id;
}
}
}
}
if(empty($attachments_ids)) return ;
$gallery_uid = uniqid();
echo '<div class="preloader"><div class="preloader-spin"></div></div>';
echo '<div class="gem-simple-gallery gem-quick-view-gallery gem-gallery-hover-default responsive">';
foreach($attachments_ids as $attachments_id) {
$preview_image_url = wp_get_attachment_image_src($attachments_id, apply_filters('single_product_large_thumbnail_size', 'shop_single'));
?>
<div class="gem-gallery-item">
<div class="gem-gallery-item-image">
<img src="<?php echo esc_url($preview_image_url[0]); ?>" alt="" class="img-responsive">
</div>
</div>
<?php
}
echo '</div>';
}
function thegem_woocommerce_single_product_page_content() {
$vc_show_content = false;
if(thegem_is_plugin_active('js_composer/js_composer.php')) {
global $vc_manager;
if($vc_manager->mode() == 'admin_frontend_editor' || $vc_manager->mode() == 'admin_page' || $vc_manager->mode()== 'page_editable') {
$vc_show_content = true;
}
}
if(get_the_content() || $vc_show_content) {
?>
<div class="product-content entry-content"><?php the_content(); ?></div>
<?php
}
}
function thegem_woocommerce_output_related_products_args($args) {
$args['posts_per_page'] = 6;
$args['columns'] = 6;
return $args;
}
add_filter('woocommerce_output_related_products_args', 'thegem_woocommerce_output_related_products_args');
function thegem_loop_shop_per_page() {
$pc = !empty($_REQUEST['product_count']) && intval($_REQUEST['product_count']) > 0 ? intval($_REQUEST['product_count']) : 12;
return $pc;
}
add_filter('loop_shop_per_page', 'thegem_loop_shop_per_page', 15);
function thegem_woocommerce_product_per_page_select() {
$products_per_page_items = array(12,24,48);
$pc = !empty($_REQUEST['product_count']) && intval($_REQUEST['product_count']) > 0 ? intval($_REQUEST['product_count']) : 12;
?>
<div class="woocommerce-select-count">
<select id="products-per-page" name="products_per_page" class="gem-combobox" onchange="window.location.href=jQuery(this).val();">
<?php foreach($products_per_page_items as $products_per_page_item) : ?>
<option value="<?php echo esc_url(add_query_arg('product_count', $products_per_page_item)); ?>" <?php selected($pc, $products_per_page_item); ?>><?php printf(esc_html__('Show %d On Page', 'thegem'), $products_per_page_item); ?></option>
<?php endforeach; ?>
</select>
</div>
<?php
}
function thegem_woocommerce_before_shop_content() {
echo '<div class="products-list">';
}
function thegem_woocommerce_after_shop_content() {
echo '</div><!-- .products-list -->';
}
function thegem_woocommerce_before_shop_loop_start() {
echo '<div class="before-products-list rounded-corners clearfix">';
}
function thegem_woocommerce_before_shop_loop_end() {
echo '</div>';
}
function thegem_woocommerce_single_product_navigation() {
?>
<div class="block-navigation">
<?php if($post = get_previous_post()) : ?>
<div class="block-product-navigation-prev">
<?php thegem_button(array(
'text' => __('Prev', 'thegem'),
'href' => get_permalink($post->ID),
'style' => 'outline',
'size' => 'tiny',
'position' => 'left',
'icon' => 'prev',
'border_color' => thegem_get_option('button_background_basic_color'),
'text_color' => thegem_get_option('button_background_basic_color'),
'hover_background_color' => thegem_get_option('button_background_basic_color'),
'hover_text_color' => thegem_get_option('button_outline_text_hover_color'),
), 1); ?>
</div>
<?php endif; ?>
<?php if($post = get_next_post()) : ?>
<div class="block-product-navigation-next">
<?php thegem_button(array(
'text' => __('Next', 'thegem'),
'href' => get_permalink($post->ID),
'style' => 'outline',
'size' => 'tiny',
'position' => 'right',
'icon' => 'next',
'icon_position' => 'right',
'border_color' => thegem_get_option('button_background_basic_color'),
'text_color' => thegem_get_option('button_background_basic_color'),
'hover_background_color' => thegem_get_option('button_background_basic_color'),
'hover_text_color' => thegem_get_option('button_outline_text_hover_color'),
), 1); ?>
</div>
<?php endif; ?>
</div><!-- .block-product-navigation-prev -->
<?php
}
function thegem_product_quick_view_navigation() {
?>
<div class="product-quick-view-navigation">
<?php if($post = get_previous_post()) : ?>
<?php thegem_button(array(
'style' => 'outline',
'size' => 'tiny',
'icon' => 'prev',
'border_color' => thegem_get_option('button_background_basic_color'),
'text_color' => thegem_get_option('button_background_basic_color'),
'hover_background_color' => thegem_get_option('button_background_basic_color'),
'hover_text_color' => thegem_get_option('button_outline_text_hover_color'),
'attributes' => array(
'data-product-id' => $post->ID
)
), 1); ?>
<?php endif; ?>
<?php if($post = get_next_post()) : ?>
<?php thegem_button(array(
'style' => 'outline',
'size' => 'tiny',
'icon' => 'next',
'icon_position' => 'right',
'border_color' => thegem_get_option('button_background_basic_color'),
'text_color' => thegem_get_option('button_background_basic_color'),
'hover_background_color' => thegem_get_option('button_background_basic_color'),
'hover_text_color' => thegem_get_option('button_outline_text_hover_color'),
'attributes' => array(
'data-product-id' => $post->ID
)
), 1); ?>
<?php endif; ?>
</div>
<?php
}
function thegem_woocommerce_show_product_loop_featured_flash() {
global $post, $product;
if($product->is_featured()) {
echo apply_filters('woocommerce_featured_flash', '<span class="new-label title-h6">' . esc_html__( 'New', 'thegem' ) . '</span>', $post, $product);
}
}
function thegem_woocommerce_show_product_loop_out_of_stock_flash() {
global $post, $product;
if(!$product->is_in_stock()) {
echo apply_filters('woocommerce_out_of_stock_flash', '<span class="out-of-stock-label title-h6">' . wp_kses(__('Out <span class="small">of stock</span>', 'thegem'), array('span' => array('class' => array()))) . '</span>', $post, $product);
}
}
function thegem_woocommerce_after_shop_loop_item_link() {
global $post, $product;
echo '<a href="'.esc_url(get_the_permalink()).'" class="bottom-product-link"></a>';
}
function thegem_woocommerce_single_variation_add_to_cart_button() {
global $product;
?>
<div class="woocommerce-variation-add-to-cart variations_button">
<?php do_action( 'woocommerce_before_add_to_cart_button' ); ?>
<?php do_action( 'woocommerce_before_add_to_cart_quantity' ); ?>
<?php woocommerce_quantity_input( array( 'input_value' => isset( $_POST['quantity'] ) ? wc_stock_amount( $_POST['quantity'] ) : 1 ) ); ?>
<?php thegem_button(array(
'tag' => 'button',
'text' => esc_html($product->single_add_to_cart_text()),
'icon' => 'cart',
'background_color' => thegem_get_option('styled_elements_color_1'),
'hover_background_color' => thegem_get_option('button_background_hover_color'),
'attributes' => array('type' => 'submit', 'class' => 'single_add_to_cart_button button alt'),
), 1); ?>
<?php do_action('thegem_woocommerce_after_add_to_cart_button'); ?>
<?php do_action( 'woocommerce_after_add_to_cart_button' ); ?>
<input type="hidden" name="add-to-cart" value="<?php echo absint( $product->get_id() ); ?>" />
<input type="hidden" name="product_id" value="<?php echo absint( $product->get_id() ); ?>" />
<input type="hidden" name="variation_id" class="variation_id" value="" />
</div>
<?php
}
function thegem_woocommerce_back_to_shop_button() {
thegem_button(array(
'href' => get_permalink(wc_get_page_id('shop')),
'style' => 'outline',
'size' => 'tiny',
'position' => 'right',
'icon' => 'prev',
'border_color' => thegem_get_option('button_background_basic_color'),
'text_color' => thegem_get_option('button_background_basic_color'),
'hover_background_color' => thegem_get_option('button_background_basic_color'),
'hover_text_color' => thegem_get_option('button_outline_text_hover_color'),
'extra_class' => 'back-to-shop-button'
), 1);
}
function thegem_woocommerce_rating_separator() {
echo '<div class="rating-divider"></div>';
}
function thegem_woocommerce_size_guide() {
global $product;
$product_size_guide_data = thegem_get_sanitize_product_size_guide_data($product->get_id());
$size_guide_image = thegem_get_option('size_guide_image');
if($product_size_guide_data['disable']) {
$size_guide_image = '';
} elseif($product_size_guide_data['custom'] && $product_size_guide_data['custom_image']) {
$size_guide_image = $product_size_guide_data['custom_image'];
}
?>
<?php if($size_guide_image) : ?>
<div class="size-guide"><a href="<?php echo esc_url($size_guide_image); ?>" class="fancybox"><?php esc_html_e('Size guide', 'thegem'); ?></a></div>
<?php endif; ?>
<?php
}
function thegem_yith_wcwl_add_to_wishlist_button() {
global $product;
if( ! isset( $product ) ){
$product = ( isset( $atts['product_id'] ) ) ? wc_get_product( $atts['product_id'] ) : false;
}
$label_option = get_option( 'yith_wcwl_add_to_wishlist_text' );
$label = apply_filters( 'yith_wcwl_button_label', $label_option );
$browse_wishlist = get_option( 'yith_wcwl_browse_wishlist_text' );
$default_wishlists = is_user_logged_in() ? YITH_WCWL()->get_wishlists( array( 'is_default' => true ) ) : false;
if( ! empty( $default_wishlists ) ){
$default_wishlist = $default_wishlists[0]['ID'];
}
else{
$default_wishlist = false;
}
$exists = YITH_WCWL()->is_product_in_wishlist( $product->get_id(), $default_wishlist );
$wishlist_url = YITH_WCWL()->get_wishlist_url();
$product_type = $product->get_type();
$disable_wishlist = false;
$available_multi_wishlist = false;
?>
<div class="yith-wcwl-add-to-wishlist add-to-wishlist-<?php echo esc_attr($product->get_id()); ?>">
<?php if(!($disable_wishlist && ! is_user_logged_in())): ?>
<?php
thegem_button(array(
'style' => 'outline',
'text' => $label,
'href' => esc_url(add_query_arg('add_to_wishlist', $product->get_id())),
'text_color' => thegem_get_option('button_background_basic_color'),
'border_color' => thegem_get_option('button_background_basic_color'),
'hover_text_color' => thegem_get_option('button_outline_text_hover_color'),
'hover_background_color' => thegem_get_option('button_background_basic_color'),
'hover_border_color' => thegem_get_option('button_background_basic_color'),
'icon' => 'add-to-wishlist',
'attributes' => array(
'data-product-type' => $product_type,
'data-product-id' => $product->get_id(),
'rel' => 'nofollow',
'class' => 'add_to_wishlist',
),
'extra_class' => 'yith-wcwl-add-button '.(($exists && ! $available_multi_wishlist) ? 'hide': 'show'),
),1);
?>
<?php
thegem_button(array(
'style' => 'outline',
'text' => apply_filters('yith-wcwl-browse-wishlist-label', $browse_wishlist),
'href' => esc_url($wishlist_url),
'text_color' => thegem_get_option('button_background_basic_color'),
'border_color' => thegem_get_option('button_background_basic_color'),
'hover_text_color' => thegem_get_option('button_outline_text_hover_color'),
'hover_background_color' => thegem_get_option('button_background_basic_color'),
'hover_border_color' => thegem_get_option('button_background_basic_color'),
'icon' => 'browse-wishlist',
'attributes' => array(
'rel' => 'nofollow',
),
'extra_class' => 'yith-wcwl-wishlistaddedbrowse hide',
),1);
?>
<?php
thegem_button(array(
'style' => 'outline',
'text' => apply_filters('yith-wcwl-browse-wishlist-label', $browse_wishlist),
'href' => esc_url($wishlist_url),
'text_color' => thegem_get_option('button_background_basic_color'),
'border_color' => thegem_get_option('button_background_basic_color'),
'hover_text_color' => thegem_get_option('button_outline_text_hover_color'),
'hover_background_color' => thegem_get_option('button_background_basic_color'),
'hover_border_color' => thegem_get_option('button_background_basic_color'),
'icon' => 'browse-wishlist',
'attributes' => array(
'rel' => 'nofollow',
),
'extra_class' => 'yith-wcwl-wishlistexistsbrowse '.(($exists && ! $available_multi_wishlist) ? 'show' : 'hide'),
),1);
?>
<div class="yith-wcwl-wishlistaddresponse"></div>
<?php else: ?>
<?php
thegem_button(array(
'style' => 'outline',
'text' => $label,
'href' => esc_url(add_query_arg(array('wishlist_notice' => 'true', 'add_to_wishlist' => $product->get_id()), get_permalink(wc_get_page_id('myaccount')))),
'text_color' => thegem_get_option('button_background_basic_color'),
'border_color' => thegem_get_option('button_background_basic_color'),
'hover_text_color' => thegem_get_option('button_outline_text_hover_color'),
'hover_background_color' => thegem_get_option('button_background_basic_color'),
'hover_border_color' => thegem_get_option('button_background_basic_color'),
'icon' => 'wishlist',
'attributes' => array(
'data-product-type' => $product_type,
'rel' => 'nofollow',
'class' => 'add_to_wishlist',
),
'extra_class' => 'yith-wcwl-add-button '.(($exists && !$available_multi_wishlist) ? 'hide': 'show'),
),1);
?>
<?php endif; ?>
</div>
<?php
}
function thegem_woocommerce_template_loop_product_hover_thumbnail() {
global $post, $product;
$gallery = $product->get_gallery_image_ids();
$product_hover = get_post_meta($post->ID, 'thegem_product_disable_hover', true);
$output = '<span class="woo-product-overlay"></span>';
if(isset($gallery[0]) && !$product_hover) {
if(thegem_get_option('woocommerce_activate_images_sizes')) {
$image = thegem_get_thumbnail_image($gallery[0], 'thegem-product-catalog', false, array( 'class' => "attachment woo-product-hover"));
} else {
$image = wp_get_attachment_image($gallery[0], 'shop_catalog', false, array( 'class' => "attachment woo-product-hover"));
}
if(!empty($image)) $output = $image;
}
echo $output;
}
function thegem_woocommerce_template_loop_product_quick_view() {
global $post, $product;
if(thegem_get_option('product_quick_view')) {
wp_enqueue_script( 'wc-single-product' );
wp_enqueue_script( 'wc-add-to-cart-variation' );
echo '<span class="quick-view-button title-h6" data-product-id="'.$post->ID.'">'.esc_html__('Quick View', 'thegem').'</span>';
}
}
function thegem_woocommerce_template_loop_category_title($category) {
echo '<div class="category-overlay">';
echo '<h6 class="category-title">'.$category->name.'</h6>';
echo '<div class="category-overlay-separator"></div>';
echo '<div class="category-count">'.sprintf(esc_html(_n('%s item', '%s items', $category->count, 'thegem')), $category->count).'</div>';
echo '</div>';
}
remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10 );
remove_action( 'woocommerce_archive_description', 'woocommerce_product_archive_description', 10 );
add_action( 'woocommerce_after_shop_loop', 'thegem_woocommerce_after_shop_content', 15);
add_action( 'woocommerce_after_shop_loop', 'woocommerce_taxonomy_archive_description', 15 );
add_action( 'woocommerce_after_shop_loop', 'woocommerce_product_archive_description', 15 );
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_output_all_notices', 10 );
add_action( 'woocommerce_before_checkout_form', 'woocommerce_output_all_notices', 5 );
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_shop_loop', 'woocommerce_result_count', 20);
remove_action('woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30);
add_action('woocommerce_before_shop_loop', 'thegem_woocommerce_before_shop_content', 4);
add_action('woocommerce_before_shop_loop', 'thegem_woocommerce_before_shop_loop_start', 11);
add_action('woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 15);
add_action('woocommerce_before_shop_loop', 'woocommerce_breadcrumb', 20);
add_action('woocommerce_before_shop_loop', 'thegem_woocommerce_product_per_page_select', 30);
add_action('woocommerce_before_shop_loop', 'woocommerce_result_count', 40);
add_action('woocommerce_before_shop_loop', 'thegem_woocommerce_before_shop_loop_end', 45);
remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10);
remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 5);
add_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10);
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10 );
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );
add_action('woocommerce_shop_loop_item_labels', 'woocommerce_show_product_loop_sale_flash', 5);
add_action('woocommerce_shop_loop_item_labels', 'thegem_woocommerce_show_product_loop_featured_flash', 10);
add_action('woocommerce_shop_loop_item_labels', 'thegem_woocommerce_show_product_loop_out_of_stock_flash', 10);
add_action('woocommerce_shop_loop_item_image', 'woocommerce_template_loop_product_thumbnail', 10);
add_action('woocommerce_shop_loop_item_image', 'thegem_woocommerce_template_loop_product_hover_thumbnail', 15);
add_action('woocommerce_shop_loop_item_image', 'thegem_woocommerce_template_loop_product_quick_view', 40);
add_action('woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_rating', 5);
add_action('woocommerce_after_shop_loop_item', 'thegem_woocommerce_after_shop_loop_item_link', 15);
if(function_exists('thegem_is_plugin_active') && !thegem_get_option('catalog_view') && defined( 'YITH_WCWL' )) {
add_action('woocommerce_after_shop_loop_item', function() { echo do_shortcode( "[yith_wcwl_add_to_wishlist]" ); }, 20);
}
add_action('thegem_woocommerce_single_product_left', 'thegem_woocommerce_single_product_gallery', 5);
add_action('thegem_woocommerce_single_product_left', 'thegem_socials_sharing', 10);
add_action('thegem_woocommerce_single_product_left', 'woocommerce_template_single_meta', 15);
add_action('thegem_woocommerce_single_product_quick_view_left', 'thegem_woocommerce_single_product_quick_view_gallery', 5);
add_action('thegem_woocommerce_single_product_right', 'thegem_woocommerce_back_to_shop_button', 5);
add_action('thegem_woocommerce_single_product_right', 'woocommerce_template_single_title', 10);
add_action('thegem_woocommerce_single_product_right', 'woocommerce_template_single_rating', 20);
add_action('thegem_woocommerce_single_product_right', 'thegem_woocommerce_rating_separator', 25);
add_action('thegem_woocommerce_single_product_right', 'woocommerce_template_single_price', 30);
add_action('thegem_woocommerce_single_product_right', 'woocommerce_template_single_excerpt', 35);
add_action('thegem_woocommerce_single_product_right', 'woocommerce_template_single_add_to_cart', 45);
add_action('thegem_woocommerce_single_product_right', 'thegem_woocommerce_size_guide', 50);
add_action('thegem_woocommerce_single_product_quick_view_right', 'woocommerce_template_single_title', 10);
add_action('thegem_woocommerce_single_product_quick_view_right', 'woocommerce_template_single_rating', 20);
add_action('thegem_woocommerce_single_product_quick_view_right', 'thegem_woocommerce_rating_separator', 25);
add_action('thegem_woocommerce_single_product_quick_view_right', 'woocommerce_template_single_price', 30);
add_action('thegem_woocommerce_single_product_quick_view_right', 'woocommerce_template_single_excerpt', 35);
add_action('thegem_woocommerce_single_product_quick_view_right', 'woocommerce_template_single_add_to_cart', 45);
add_action('thegem_woocommerce_single_product_quick_view_right', 'woocommerce_template_single_meta', 55);
add_action('thegem_woocommerce_single_product_quick_view_bottom', 'thegem_product_quick_view_navigation', 10);
if(function_exists('thegem_is_plugin_active') && thegem_is_plugin_active('yith-woocommerce-wishlist/init.php')) {
add_action('thegem_woocommerce_after_add_to_cart_button', 'thegem_yith_wcwl_add_to_wishlist_button');
}
remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
add_action( 'woocommerce_single_variation', 'thegem_woocommerce_single_variation_add_to_cart_button', 20 );
add_action('thegem_woocommerce_single_product_bottom', 'woocommerce_output_product_data_tabs', 5);
add_action('thegem_woocommerce_single_product_bottom', 'thegem_woocommerce_single_product_navigation', 10);
add_action('thegem_woocommerce_single_product_bottom', 'thegem_woocommerce_single_product_page_content', 15);
add_action('thegem_woocommerce_after_single_product', 'woocommerce_output_related_products', 5);
remove_action( 'woocommerce_shop_loop_subcategory_title', 'woocommerce_template_loop_category_title', 10 );
add_action( 'woocommerce_shop_loop_subcategory_title', 'thegem_woocommerce_template_loop_category_title', 10 );
remove_action( 'woocommerce_review_before_comment_meta', 'woocommerce_review_display_rating', 10 );
remove_action( 'woocommerce_review_meta', 'woocommerce_review_display_meta', 10 );
function thegem_cart_menu($items, $args) {
if(thegem_is_plugin_active('woocommerce/woocommerce.php') && $args->theme_location == 'primary' && !thegem_get_option('hide_card_icon')) {
$count = thegem_get_cart_count();
ob_start();
woocommerce_mini_cart();
$minicart = ob_get_clean();
$items .= '<li class="menu-item menu-item-cart not-dlmenu"><a href="'.esc_url(get_permalink(wc_get_page_id('cart'))).'" class="minicart-menu-link ' . ($count == 0 ? 'empty' : '') . '">' . '<span class="minicart-item-count">' . $count . '</span>' . '</a><div class="minicart"><div class="widget_shopping_cart_content">'.$minicart.'</div></div></li>';
}
return $items;
}
add_filter('wp_nav_menu_items', 'thegem_cart_menu', 11, 2);
function thegem_woocommerce_placeholder_img($val, $size, $dimensions) {
return '<span class="product-dummy-wrapper" style="max-width: '.$dimensions['width'].'px;"><span class="product-dummy" style="padding-bottom: '.($dimensions['height']*100/$dimensions['width']).'%;"></span></span>';
}
add_filter('woocommerce_placeholder_img', 'thegem_woocommerce_placeholder_img', 10, 3);
function thegem_cart_short_info() {
echo '<div class="cart-short-info">'.sprintf(wp_kses(__('You Have <span class="items-count">%d Items</span> In Your Cart', 'thegem'), array('span' => array('class' => array()))), WC()->cart->cart_contents_count).'</div>';
}
add_action('woocommerce_before_cart', 'thegem_cart_short_info', 15);
add_action('woocommerce_before_cart', 'woocommerce_breadcrumb', 10);
function thegem_cart_items_html_output() {
thegem_cart_short_info();
die(-1);
}
add_action('wp_ajax_thegem_cart_items_html', 'thegem_cart_items_html_output');
add_action('wp_ajax_nopriv_thegem_cart_items_html', 'thegem_cart_items_html_output');
function thegem_wc_add_to_cart_message($message, $products) {
$titles = array();
$count = 0;
$show_qty = true;
if ( ! is_array( $products ) ) {
$products = array( $products => 1 );
$show_qty = false;
}
if ( ! $show_qty ) {
$products = array_fill_keys( array_keys( $products ), 1 );
}
foreach ( $products as $product_id => $qty ) {
$titles[] = ( $qty > 1 ? absint( $qty ) . ' × ' : '' ) . sprintf( _x( '“%s”', 'Item name in quotes', 'woocommerce' ), strip_tags( get_the_title( $product_id ) ) );
$count += $qty;
}
$titles = array_filter( $titles );
$added_text = sprintf( _n( '%s has been added to your cart.', '%s have been added to your cart.', $count, 'woocommerce' ), wc_format_list_of_items( $titles ) );
// Output success messages
if ( 'yes' === get_option( 'woocommerce_cart_redirect_after_add' ) ) {
$return_to = apply_filters( 'woocommerce_continue_shopping_redirect', wc_get_raw_referer() ? wp_validate_redirect( wc_get_raw_referer(), false ) : wc_get_page_permalink( 'shop' ) );
$message = sprintf('<div class="cart-added"><div class="cart-added-text">%s</div><div class="cart-added-button"><a href="%s" class="gem-button button wc-forward">%s</a></div></div>', $added_text, esc_url($return_to), esc_html__('Continue shopping', 'woocommerce'));
} else {
$message = sprintf('<div class="cart-added"><div class="cart-added-text">%s</div><div class="cart-added-button"><a href="%s" class="gem-button button wc-forward">%s</a></div></div>', $added_text, esc_url(wc_get_page_permalink( 'cart' )), esc_html__('View cart', 'woocommerce'));
}
return $message;
}
add_filter('wc_add_to_cart_message_html', 'thegem_wc_add_to_cart_message', 10, 2);
function thegem_product_add_page_settings_boxes() {
add_meta_box('thegem_page_title', esc_html__('Page Title', 'thegem'), 'thegem_page_title_settings_box', 'product', 'normal', 'high');
add_meta_box('thegem_page_sidebar', esc_html__('Page Sidebar', 'thegem'), 'thegem_page_sidebar_settings_box', 'product', 'normal', 'high');
}
add_action('add_meta_boxes', 'thegem_product_add_page_settings_boxes');
function thegem_save_product_page_data($post_id) {
if(
!isset($_POST['thegem_page_title_settings_box_nonce']) ||
!isset($_POST['thegem_page_sidebar_settings_box_nonce'])
) {
return;
}
if(
!wp_verify_nonce($_POST['thegem_page_title_settings_box_nonce'], 'thegem_page_title_settings_box') ||
!wp_verify_nonce($_POST['thegem_page_sidebar_settings_box_nonce'], 'thegem_page_sidebar_settings_box')
) {
return;
}
if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if(isset($_POST['post_type']) && in_array($_POST['post_type'], array('product'))) {
if(!current_user_can('edit_page', $post_id)) {
return;
}
} else {
if(!current_user_can('edit_post', $post_id)) {
return;
}
}
if(!isset($_POST['thegem_page_data']) || !is_array($_POST['thegem_page_data'])) {
return;
}
$page_data = array_merge(
thegem_get_sanitize_page_title_data(0, $_POST['thegem_page_data']),
thegem_get_sanitize_page_sidebar_data(0, $_POST['thegem_page_data'])
);
update_post_meta($post_id, 'thegem_page_data', $page_data);
}
add_action('save_post', 'thegem_save_product_page_data');
function thegem_product_tabs($tabs = array()) {
global $product, $post;
// Description tab - shows product content
if (get_post_meta($post->ID, 'thegem_product_description', true)) {
$tabs['description'] = array(
'title' => esc_html__( 'Description', 'woocommerce' ),
'priority' => 10,
'callback' => 'woocommerce_product_description_tab'
);
} elseif(isset($tabs['description'])) {
unset($tabs['description']);
}
return $tabs;
}
add_filter('woocommerce_product_tabs', 'thegem_product_tabs', 11);
function thegem_woocommerce_subcategory_thumbnail( $category ) {
$small_thumbnail_size = apply_filters( 'single_category_small_thumbnail_size', 'shop_catalog' );
$thumbnail_id = get_term_meta( $category->term_id, 'thumbnail_id', true);
$image = '';
if ( $thumbnail_id ) {
if(thegem_get_option('woocommerce_activate_images_sizes')) {
$image = thegem_get_thumbnail_src( $thumbnail_id, 'thegem-product-catalog' );
} else {
$image = wp_get_attachment_image_src( $thumbnail_id, $small_thumbnail_size );
}
global $thegem_product_categories_images;
if($thegem_product_categories_images) {
$image = wp_get_attachment_image_src( $thumbnail_id, 'thegem-custom-product-categories');
}
}
if ( $image ) {
$image[0] = str_replace( ' ', '%20', $image[0] );
echo '<img src="' . esc_url( $image[0] ) . '" width="'.esc_attr($image[1]).'" height="'.esc_attr($image[2]).'" alt="' . esc_attr( $category->name ) . '" class="img-responsive" />';
} else {
if(thegem_get_option('woocommerce_activate_images_sizes')) {
echo wc_placeholder_img(array(thegem_get_option('woocommerce_catalog_image_width'), thegem_get_option('woocommerce_catalog_image_height'), 1));
} else {
echo wc_placeholder_img($small_thumbnail_size);
}
}
}
remove_action('woocommerce_before_subcategory_title', 'woocommerce_subcategory_thumbnail', 10);
add_action('woocommerce_before_subcategory_title', 'thegem_woocommerce_subcategory_thumbnail', 10);
add_filter('woocommerce_add_to_cart_fragments', 'gem_woocommerce_header_dropdown_cart_fragment');
function gem_woocommerce_header_dropdown_cart_fragment( $fragments ) {
$count = thegem_get_cart_count();
$fragments['a.minicart-menu-link'] = '<a href="'.esc_url(get_permalink(wc_get_page_id('cart'))).'" class="minicart-menu-link ' . ($count == 0 ? 'empty' : '') . '"><span class="minicart-item-count">'.$count.'</span></a>';
return $fragments;
}
function thegem_single_product_small_thumbnail_size($size) {
global $thegem_product_categories_images;
if($thegem_product_categories_images) {
return 'thegem-custom-product-categories';
}
return $size;
}
add_filter( 'single_category_small_thumbnail_size', 'thegem_single_product_small_thumbnail_size' );
function thegem_woocommerce_get_image_size_categories($size) {
$size = array(
'width' => '1170',
'height' => '1117',
'crop' => 1
);
return $size;
}
add_filter( 'woocommerce_get_image_size_thegem-custom-product-categories', 'thegem_woocommerce_get_image_size_categories' );
function thegem_woocommerce_account_menu_item_classes($classes, $endpoint) {
if(in_array('is-active', $classes)) {
$classes[] = 'current-menu-ancestor';
}
return $classes;
}
add_filter('woocommerce_account_menu_item_classes', 'thegem_woocommerce_account_menu_item_classes', 10, 2);
function thegem_product_quick_view_output() {
$nonce = empty($_REQUEST['ajax_nonce']) ? '' : $_REQUEST['ajax_nonce'];
$product_id = empty($_REQUEST['product_id']) ? '' : $_REQUEST['product_id'];
if(!wp_verify_nonce($nonce, 'product_quick_view_ajax_security' )) {
die(-1);
}
$args = array(
'posts_per_page' => 1,
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'no_found_rows' => 1,
);
if ( isset( $product_id ) ) {
$args['p'] = absint( $product_id );
}
$single_product = new WP_Query( $args );
$preselected_id = '0';
ob_start();
while ( $single_product->have_posts() ) :
$single_product->the_post();
?>
<div class="single-product" data-product-page-preselected-id="<?php echo esc_attr( $preselected_id ); ?>">
<?php wc_get_template_part( 'content', 'single-product-quick-view' ); ?>
</div>
<?php endwhile; // end of the loop.
wp_reset_postdata();
$time2= time();
echo '<div class="woocommerce">' . ob_get_clean() . '</div>';
die(-1);
}
add_action('wp_ajax_thegem_product_quick_view', 'thegem_product_quick_view_output');
add_action('wp_ajax_nopriv_thegem_product_quick_view', 'thegem_product_quick_view_output');
function thegem_catalog_view() {
if(thegem_get_option('catalog_view')) {
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
remove_action('thegem_woocommerce_single_product_right', 'woocommerce_template_single_price', 30);
remove_action('thegem_woocommerce_single_product_right', 'woocommerce_template_single_add_to_cart', 45);
remove_action('thegem_woocommerce_single_product_quick_view_right', 'woocommerce_template_single_price', 30);
remove_action('thegem_woocommerce_single_product_quick_view_right', 'woocommerce_template_single_add_to_cart', 45);
remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10);
remove_action('thegem_woocommerce_single_product_left', 'thegem_socials_sharing', 10);
remove_action('thegem_woocommerce_single_product_left', 'woocommerce_template_single_meta', 15);
add_action('thegem_woocommerce_single_product_right', 'thegem_socials_sharing', 65);
add_action('thegem_woocommerce_single_product_right', 'woocommerce_template_single_meta', 70);
remove_action('wp_nav_menu_items', 'thegem_cart_menu', 11);
}
}
add_action('init', 'thegem_catalog_view');
add_action('wp', 'thegem_catalog_view');
function thegem_woocommerce_form_field_args_callback($args, $key, $value) {
if (stripos($key, 'shipping_') === 0) {
$args['autofocus'] = false;
}
return $args;
}
add_filter('woocommerce_form_field_args', 'thegem_woocommerce_form_field_args_callback', 10, 3);
function thegem_woocommerce_loop_add_to_cart_link($link, $product) {
if (strripos($link, 'add_to_cart_button') === false) {
return '';
}
return $link;
}
add_filter('woocommerce_loop_add_to_cart_link', 'thegem_woocommerce_loop_add_to_cart_link', 10, 2);
function thegem_woocommerce_structured_data() {
if(isset($GLOBALS['woocommerce']) && isset($GLOBALS['woocommerce']->structured_data)) {
add_action('thegem_woocommerce_single_product_right', array($GLOBALS['woocommerce']->structured_data, 'generate_product_data'), 60);
}
}
add_action('init', 'thegem_woocommerce_structured_data');
function thegem_single_product_archive_thumbnail_size($size) {
if(thegem_get_option('woocommerce_activate_images_sizes')) {
return 'thegem-product-catalog';
}
return $size;
}
add_filter( 'single_product_archive_thumbnail_size', 'thegem_single_product_archive_thumbnail_size' );
add_filter( 'subcategory_archive_thumbnail_size', 'thegem_single_product_archive_thumbnail_size' );
function thegem_woocommerce_get_image_size_thumbnail($size) {
if(thegem_get_option('woocommerce_activate_images_sizes')) {
return array(
'width' => thegem_get_option('woocommerce_thumbnail_image_width'),
'height' => thegem_get_option('woocommerce_thumbnail_image_height'),
'crop' => 1,
);
}
return $size;
}
add_filter( 'woocommerce_get_image_size_thumbnail', 'thegem_woocommerce_get_image_size_thumbnail' );
function thegem_woocommerce_product_get_image( $image, $product, $size, $attr, $placeholder, $image_o) {
if(thegem_get_option('woocommerce_activate_images_sizes') && $size == 'thegem-product-catalog') {
if ( $product->get_image_id() ) {
$image = thegem_get_thumbnail_image($product->get_image_id(), $size, false, $attr);
} elseif ( $product->get_parent_id() ) {
$parent_product = wc_get_product( $product->get_parent_id() );
$image = $parent_product->get_image( $size, $attr, $placeholder );
} elseif ( $placeholder ) {
$image = wc_placeholder_img( $size );
} else {
$image = '';
}
}
return $image;
}
add_filter( 'woocommerce_product_get_image', 'thegem_woocommerce_product_get_image', 10, 6);
function thegem_mobile_cart_toggle() {
if(thegem_is_plugin_active('woocommerce/woocommerce.php') && thegem_get_option('mobile_cart_position', 'top') == 'top' && !thegem_get_option('hide_card_icon') && !thegem_get_option('catalog_view')) {
$count = thegem_get_cart_count();
echo '<div class="mobile-cart"><a href="'.esc_url(get_permalink(wc_get_page_id('cart'))).'" class="minicart-menu-link temp ' . ($count == 0 ? 'empty' : '') . '">' . '<span class="minicart-item-count">' . $count . '</span>' . '</a></div><div class="mobile-minicart-overlay"></div>';
}
}
add_action('thegem_header_menu_opposite', 'thegem_mobile_cart_toggle');
function thegem_mobile_cart_before_mini_cart() {
if(thegem_get_option('mobile_cart_position', 'top') == 'top' && !thegem_get_option('hide_card_icon') && !thegem_get_option('catalog_view')) {
echo '<div class="mobile-cart-header">';
echo '<div class="mobile-cart-header-title title-h6">'.esc_html__('Cart', 'woocommerce').'</div>';
echo '<a class="mobile-cart-header-close" href="#"><span class="cart-close-line-1"></span><span class="cart-close-line-2"></span></a>';
echo '</div>';
}
}
add_action('woocommerce_before_mini_cart', 'thegem_mobile_cart_before_mini_cart');
function thegem_mobile_cart_toggle_body_class($classes) {
if(thegem_is_plugin_active('woocommerce/woocommerce.php') && thegem_get_option('mobile_cart_position', 'top') == 'top' && !thegem_get_option('hide_card_icon') && !thegem_get_option('catalog_view')) {
$classes[] = 'mobile-cart-position-top';
}
return $classes;
}
add_filter('body_class', 'thegem_mobile_cart_toggle_body_class');