• File: functions.php
  • Full Path: /home/chassiw/www/wp-content/themes/indutri/includes/woocommerce/functions.php
  • File size: 7.9 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php 
add_filter('add_to_cart_fragments', 'indutri_woocommerce_header_add_to_cart_fragment');
add_action( 'wp_print_scripts', 'indutri_de_script', 100 );

if(!function_exists('indutri_de_script')){
    function indutri_de_script() {
        wp_dequeue_script( 'wc-cart-fragments' );
        return true;
    }
}

if(!function_exists('indutri_woocommerce_query')){
    function indutri_woocommerce_query($type, $post_per_page=-1, $product_cats=''){
        global $woocommerce, $wp_query;
        
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
        $orderby = (get_query_var('orderby')) ? get_query_var('orderby') : null;
        $args = array(
            'post_type' => 'product',
            'posts_per_page' => $post_per_page,
            'post_status' => 'publish',
            'paged' => $paged,
            'orderby'   => $orderby,
            'meta_query' => array(
                array(
                    'key' => '_visibility'
                    ,'value' => array('catalog', 'visible')
                    ,'compare' => 'IN'
                )
            )
        );

        if ( isset( $args['orderby'] ) ) {
            if ( 'price' == $args['orderby'] ) {
                $args = array_merge( $args, array(
                    'meta_key'  => '_price',
                    'orderby'   => 'meta_value_num'
                ) );
            }
            if ( 'featured' == $args['orderby'] ) {
                $args = array_merge( $args, array(
                    'meta_key'  => '_featured',
                    'orderby'   => 'meta_value'
                ) );
            }
            if ( 'sku' == $args['orderby'] ) {
                $args = array_merge( $args, array(
                    'meta_key'  => '_sku',
                    'orderby'   => 'meta_value'
                ) );
            }
        }
        $product_visibility_term_ids = wc_get_product_visibility_term_ids();
        switch ($type) {
            case 'best_selling':
                $args['meta_key']= 'total_sales';
                $args['orderby']='meta_value_num';
                $args['ignore_sticky_posts'] = 1;
                $args['meta_query'] = array();
                $args['meta_query'][] = $woocommerce->query->stock_status_meta_query();
                $args['meta_query'][] = $woocommerce->query->visibility_meta_query();
                break;
            case 'featured_product':
                $args['tax_query'][] = array(
                    'taxonomy' => 'product_visibility',
                    'field'    => 'term_taxonomy_id',
                    'terms'    => $product_visibility_term_ids['featured'],
                 );
                break;
            case 'top_rate':
                add_filter( 'posts_clauses',  array( $woocommerce->query, 'order_by_rating_post_clauses' ) );
                $args['meta_query'] = array();
                $args['meta_query'][] = $woocommerce->query->stock_status_meta_query();
                $args['meta_query'][] = $woocommerce->query->visibility_meta_query();
                break;
            case 'recent_product':
                $args['meta_query'] = array();
                $args['meta_query'][] = $woocommerce->query->stock_status_meta_query();
                break;
            case 'deals': 
                $args['meta_query'] = array();
                $args['meta_query'][] = $woocommerce->query->stock_status_meta_query();
                $args['meta_query'][] = $woocommerce->query->visibility_meta_query();
                $args['meta_query'][] =  array(
                    
                    array(
                        'key'           => '_sale_price_dates_to',
                        'value'         => time(),
                        'compare'       => '>',
                        'type'          => 'numeric'
                    )
                );
                break;     
            case 'on_sale':
                $product_ids_on_sale    = wc_get_product_ids_on_sale();
                $product_ids_on_sale[]  = 0;
                $args['post__in'] = $product_ids_on_sale;
                break;
        }

        if($product_cats!=''){
            $product_cats = str_replace(' ', '', $product_cats);
            if( strlen($product_cats) > 0 ){
                $product_cats = explode(',', $product_cats);
            }
            if( is_array($product_cats) && count($product_cats) > 0 ){
                $field_name = is_numeric($product_cats[0])?'term_id':'slug';
                $args['tax_query'] = array(
                    array(
                        'taxonomy' => 'product_cat',
                        'terms' => $product_cats,
                        'field' => $field_name,
                        'include_children' => false
                    )
                );
            }
        }
        return new WP_Query($args);
    }
}    

if(!function_exists('indutri_calc_class_grid')){
    function indutri_calc_class_grid($columns){
        switch ($columns) {
            case '1':
                return 'lg-block-grid-1 md-block-grid-1 sm-block-grid-1';
                break;
            case '2':
                return 'lg-block-grid-2 md-block-grid-2 sm-block-grid-2';
                break;
            case '3':
                return 'lg-block-grid-3 md-block-grid-2 sm-block-grid-2';
                break;  
            case '4':
                return 'lg-block-grid-4 md-block-grid-4 sm-block-grid-2';
                break;  
            case '5':
                return 'lg-block-grid-5 md-block-grid-4 sm-block-grid-2';
                break;   
            case '6':
                return 'lg-block-grid-6 md-block-grid-4 sm-block-grid-2';
                break;  
            case '7':
                return 'lg-block-grid-7 md-block-grid-5 sm-block-grid-3';
                break;  
            case '8':
                return 'lg-block-grid-8 md-block-grid-4 sm-block-grid-3';
                break; 
            default:
               return 'lg-block-grid-1 md-block-grid-1 sm-block-grid-1';
                break;
        }
    }
}

if(!function_exists('indutri_woocommerce_header_add_to_cart_fragment')){
    function indutri_woocommerce_header_add_to_cart_fragment( $fragments ) {
        global $woocommerce;
        ob_start();
        indutri_get_cart_contents();
        $fragments['.cart'] = ob_get_clean();
        return $fragments;
    }
}    

if(!function_exists('indutri_get_cart_contents')){
    function indutri_get_cart_contents(){
        global $woocommerce;
        ?>
        <div class="cart dropdown">
            <a class="dropdown-toggle mini-cart" data-toggle="dropdown" aria-expanded="true" role="button" aria-haspopup="true" data-delay="0" href="#" title="<?php esc_html__('View your shopping cart', 'indutri'); ?>">
                <span class="title-cart"><i class="fas fa-shopping-cart"></i></span>
                <?php echo sprintf(_n(' <span class="mini-cart-items"> %d </span> <span class="mini-cart-items-title">' . esc_html__('item', 'indutri').' </span> ', ' <span class="mini-cart-items"> %d </span> <span class="mini-cart-items-title"> '. esc_html__('items', 'indutri').' | </span> ', $woocommerce->cart->cart_contents_count, 'indutri'), $woocommerce->cart->cart_contents_count); ?> <?php echo wp_kses($woocommerce->cart->get_cart_total(), true); ?>
            </a>
            <div class="minicart-content">
                <?php woocommerce_mini_cart(); ?>
            </div>
        </div>
        <?php
    }
}

if(!function_exists('indutri_woocommerce_scripts')){
    function indutri_woocommerce_scripts(){
        wp_dequeue_script('wc-add-to-cart');
        wp_register_script( 'wc-add-to-cart', INDUTRI_THEME_URL . '/js/add-to-cart.js' , array( 'jquery' ) );
        wp_enqueue_script('wc-add-to-cart');
    }
    add_action('init','indutri_woocommerce_scripts');    
}