Your IP : 216.73.216.68


Current Path : /home/sunflowe/www2/disneyexplorer/wp-content/plugins/theme-core/inc/shortcode/
Upload File :
Current File : /home/sunflowe/www2/disneyexplorer/wp-content/plugins/theme-core/inc/shortcode/product.php

<?php
/**
 * NA Core Plugin
 * @package     NA Core
 * @version     2.0
 * @author      NanoAgency
 * @link        http://nanoagency.co
 * @copyright   Copyright (c) 2015 NanoAgency
 * @license     GPL v2
 */
if (!function_exists('na_shortcode_products')) {
    function na_shortcode_products($atts, $content)
    {

        if ( class_exists( 'WooCommerce' ) ) {
            $product_categories = get_categories( 
                array(
                    'taxonomy' => 'product_cat',
                )
            );
            $product_cats = array();
            $product_cats_all = '';
            if (count($product_categories) > 0) {
                
                foreach ($product_categories as $value) {
                    $product_cats[$value->name] = $value->slug;
                }
                $product_cats_all = implode(',', $product_cats);
            }


            $product_tags = get_terms( 'product_tag');
            $product_tags_arr = array();
            $product_tags_all = '';
            if (count($product_tags) > 0) {
                
                foreach ($product_tags as $value) {
                    $product_tags_arr[$value->name] = $value->slug;
                }
                $product_tags_all = implode(',', $product_tags_arr);
            }


            $attributes_arr = array();
            $attributes_arr_all = '';
            if(function_exists('wc_get_attribute_taxonomies')){
                $product_attribute_taxonomies = wc_get_attribute_taxonomies();
                if (count($product_attribute_taxonomies) > 0) {
                    
                    foreach ($product_attribute_taxonomies as $value) {
                        $attributes_arr[$value->attribute_label] = $value->attribute_name;
                    }
                    $attributes_arr_all = implode(',', $attributes_arr);
                }
            }

            $atts = shortcode_atts(array(
                'title' => '',
                'post_type' => 'product',
                'pagination' => 'simple',
                'column' => 'columns6',
                'posts_per_page' => 4,
                'products_type' => 'products_carousel',
                'products_img_size' => 'shop_thumbnail',
                'paged' => 1,
                'ignore_sticky_posts' => 1,
                'show' => '',
                'orderby' => 'date',
                'element_custom_class' => '',
                'padding_bottom_module' => '50px',
                'filter_categories' => $product_cats_all,
                'filter_tags' => $product_tags_all,
                'filter_attributes' => $attributes_arr_all,
                'show_filter' => 1,
                'show_featured_filter'=> 1,
                'show_price_filter'=> 1,
                'price_filter_level'=> 5,
                'price_filter_range' => 100,
                'show_loadmore' => 1
            ), $atts);


            $meta_query = WC()->query->get_meta_query();


            $wc_attr = array(
                'post_type' => 'product',
                'posts_per_page' => $atts['posts_per_page'],
                'paged' => $atts['paged'],
                'orderby' => $atts['orderby'],
                'ignore_sticky_posts' => $atts['ignore_sticky_posts'],
            );

            if ($atts['show'] == 'featured') {

                
                $meta_query[] = array(
                    'key' => '_featured',
                    'value' => 'yes'
                );

                $wc_attr['meta_key'] = $meta_query;

            } elseif ($atts['show'] == 'onsale') {

                $product_ids_on_sale = wc_get_product_ids_on_sale();

                $wc_attr['post__in'] = $product_ids_on_sale;

                $wc_attr['meta_query'] = $meta_query;

            } elseif ($atts['show'] == 'best-selling') {

                $wc_attr['meta_key'] = 'total_sales';

                $wc_attr['meta_query'] = $meta_query;

            } elseif ($atts['show'] == 'latest'){

                $wc_attr['orderby'] = 'date';

                $wc_attr['order'] = 'DESC';

            } elseif ($atts['show'] == 'toprate'){

                add_filter('posts_clauses', array( 'WC_Shortcodes', 'order_by_rating_post_clauses'));

            } elseif ($atts['show'] == 'price'){

                $wc_attr['orderby']  = "meta_value_num {$wpdb->posts}.ID";
                $wc_attr['order']    = 'ASC';
                $wc_attr['meta_key'] = '_price';

            } elseif ($atts['show'] == 'price-desc'){

                $wc_attr['orderby']  = "meta_value_num {$wpdb->posts}.ID";
                $wc_attr['order']    = 'DESC';
                $wc_attr['meta_key'] = '_price';

            }
            if($atts['filter_categories'] != $product_cats_all && $atts['filter_categories'] !=  ''){
                $wc_attr['product_cat'] = $atts['filter_categories'];
            }
            

            $atts['wc_attr'] = $wc_attr;


            return na_get_template_part('shortcode', 'product', array('atts' => $atts));
        }
        return null;

    }
}

add_shortcode('na_products', 'na_shortcode_products');

add_action('vc_before_init', 'na_product_integrate_vc');

if (!function_exists('na_product_integrate_vc')) {
    function na_product_integrate_vc()
    {
        if ( class_exists( 'WooCommerce' ) ) {
            $product_categories = get_categories( 
                array(
                    'taxonomy' => 'product_cat',
                )
            );
            $product_cats = array();
            $product_cats_all = '';
            if (count($product_categories) > 0) {
                
                foreach ($product_categories as $value) {
                    $product_cats[$value->name] = $value->slug;
                }
                $product_cats_all = implode(',', $product_cats);
            }


            $product_tags = get_terms( 'product_tag');
            $product_tags_arr = array();
            $product_tags_all = '';
            if (count($product_tags) > 0) {
                
                foreach ($product_tags as $value) {
                    $product_tags_arr[$value->name] = $value->slug;
                }
                $product_tags_all = implode(',', $product_tags_arr);
            }


            $attributes_arr = array();
            $attributes_arr_all = '';
            if(function_exists('wc_get_attribute_taxonomies')){
                $product_attribute_taxonomies = wc_get_attribute_taxonomies();
                if (count($product_attribute_taxonomies) > 0) {
                    
                    foreach ($product_attribute_taxonomies as $value) {
                        $attributes_arr[$value->attribute_label] = $value->attribute_name;
                    }
                    $attributes_arr_all = implode(',', $attributes_arr);
                }
            }


            vc_map(
                array(
                    'name' => esc_html__('NA Products', 'na-nano'),
                    'base' => 'na_products',
                    'icon' => 'icon-nano',
                    'category' => esc_html__('NA', 'na-nano'),
                    'description' => esc_html__('Show multiple products by ID or SKU.', 'na-nano'),
                    'params' => array(
                        array(
                            'type' => 'textfield',
                            'heading' => esc_html__('Title', 'na-nano'),
                            'value' => '',
                            'param_name' => 'title',
                            'description' => esc_html__('Enter text used as shortcode title (Note: located above content element)', 'na-nano'),
                        ),
                        array(
                            'type' => 'dropdown',
                            'heading' => esc_html__('Layout type', 'na-nano'),
                            'value' => array(
                                esc_html__('Carousel', 'na-nano') => 'products_carousel',
                                esc_html__('Grid', 'na-nano') => 'products_grid',
                                esc_html__('List', 'na-nano') => 'products_list'
                            ),
                            'param_name' => 'products_type',
                            'description' => esc_html__('Select layout type for display product', 'na-nano'),
                        ),
                        array(
                            'type' => 'dropdown',
                            'heading' => esc_html__('Image size', 'na-nano'),
                            'value' => array(
                                esc_html__('Thumbnail', 'na-nano') => 'shop_thumbnail',
                                esc_html__('Catalog Images', 'na-nano') => 'shop_catalog',
                                esc_html__('Single Product Image', 'na-nano') => 'shop_single'
                            ),
                            'param_name' => 'products_img_size',
                            'description' => esc_html__('Select image size follow size in woocommerce product image size', 'na-nano'),
                        ),
                        array(
                            'type' => 'dropdown',
                            'heading' => esc_html__('Column number', 'na-nano'),
                            'value' => array(
                                esc_html__('1 Columns', 'na-nano') => 'columns1',
                                esc_html__('2 Columns', 'na-nano') => 'columns2',
                                esc_html__('3 Columns', 'na-nano') => 'columns3',
                                esc_html__('4 Columns', 'na-nano') => 'columns4',
                                esc_html__('5 Columns', 'na-nano') => 'columns5',
                                esc_html__('6 Columns', 'na-nano') => 'columns6'
                            ),
                            'std' => 'columns3',
                            'param_name' => 'column',
                            'description' => esc_html__('Display product with the number of column', 'na-nano'),
                        ),
                        array(
                            "type" => "na_multi_select",
                            "heading" => esc_html__("Select Product Categories", 'na-nano'),
                            "param_name" => "categories_in",
                            "std" => $product_cats_all,
                            "value" => $product_cats,
                        ),
                        array(
                            'type' => 'dropdown',
                            'heading' => esc_html__('"Asset type', 'na-nano'),
                            'value' => array(
                                esc_html__('All', 'na-nano') => '',
                                esc_html__('Featured product', 'na-nano') => 'featured',
                                esc_html__('Onsale product', 'na-nano') => 'onsale',
                                esc_html__('Best Selling', 'na-nano') => 'best-selling',
                                esc_html__('Latest product', 'na-nano') => 'latest',
                                esc_html__('Top rate product', 'na-nano') => 'toprate ',
                                esc_html__('Sort by price: low to high', 'na-nano') => 'price',
                                esc_html__('Sort by price: high to low', 'na-nano') => 'price-desc',
                            ),
                            'std' => '',
                            'param_name' => 'show',
                            'description' => esc_html__('Select asset type of products', 'na-nano'),
                        ),
                        array(
                            'type' => 'dropdown',
                            'heading' => esc_html__('Order by', 'na-nano'),
                            'value' => array(
                                esc_html__('Date', 'na-nano') => 'date',
                                esc_html__('Menu order', 'na-nano') => 'menu_order',
                                esc_html__('Title', 'na-nano') => 'title',
                            ),
                            'std' => 'date',
                            'param_name' => 'orderby',
                        ),
                        array(
                            'type' => 'textfield',
                            'heading' => esc_html__('Number of product', 'na-nano'),
                            'value' => 6,
                            'param_name' => 'posts_per_page',
                            'description' => esc_html__('Number of product showing', 'na-nano'),
                        ),
                        array(
                            "type" => "dropdown",
                            "heading" => esc_html__("Ignore sticky posts", 'na-nano'),
                            "param_name" => "ignore_sticky_posts",
                            'std' => 1,
                            "value" => array(
                                esc_html__('No', 'na-nano' ) => 0,
                                esc_html__('Yes', 'na-nano' ) => 1,
                            ),
                        ),
                        array(
                            'type' => 'textfield',
                            'heading' => esc_html__('Custom Class', 'na-nano'),
                            'value' => '',
                            'param_name' => 'element_custom_class',
                            'description' => esc_html__('Style particular content element differently - add a class name and refer to it in custom CSS.', 'na-nano'),
                        ),
                        array(
                            'type' => 'textfield',
                            'heading' => esc_html__('Bottom padding for the module', 'na-nano'),
                            'value' => '50px',
                            'param_name' => 'padding_bottom_module',
                            'description' => esc_html__('The space in bottom. Default is 50px', 'na-nano'),
                        ),
                        
                        array(
                            "type" => "dropdown",
                            "heading" => esc_html__("Show Load More button", 'na-nano'),
                            "param_name" => "show_loadmore",
                            'std' => 1,
                            "value" => array(
                                esc_html__('No', 'na-nano' ) => 0,
                                esc_html__('Yes', 'na-nano' ) => 1,
                            ),
                        ),
                        array(
                            "type" => "dropdown",
                            "heading" => esc_html__("Show Filter", 'na-nano'),
                            "param_name" => "show_filter",
                            'std' => 1,
                            "value" => array(
                                esc_html__('No', 'na-nano' ) => 0,
                                esc_html__('Yes', 'na-nano' ) => 1,
                            ),
                        ),
                        array(
                            "type" => "dropdown",
                            "heading" => esc_html__("Show Featured, Onsale, Best Selling, Latest product filter", 'na-nano'),
                            "param_name" => "show_featured_filter",
                            'std' => '1',
                            "dependency" => Array('element' => 'show_filter', 'value' => array('1')),
                            "value" => array(
                                esc_html__('No', 'na-nano' ) => 0,
                                esc_html__('Yes', 'na-nano' ) => 1,
                            ),
                        ),
                        array(
                            "type" => "na_multi_select",
                            "heading" => esc_html__("Categories showing in the filter", 'na-nano'),
                            "param_name" => "filter_categories",
                            "dependency" => Array('element' => 'show_filter', 'value' => array('1')),
                            "std" => $product_cats_all,
                            "value" => $product_cats,
                        ),
                        array(
                            "type" => "na_multi_select",
                            "heading" => esc_html__("Tags showing in the filter", 'na-nano'),
                            "param_name" => "filter_tags",
                            "dependency" => Array('element' => 'show_filter', 'value' => array('1')),
                            "std" => $product_tags_all,
                            "value" => $product_tags_arr,
                        ),
                        array(
                            "type" => "na_multi_select",
                            "heading" => esc_html__("Product attributes showing in the filter", 'na-nano'),
                            "param_name" => "filter_attributes",
                            "dependency" => Array('element' => 'show_filter', 'value' => array('1')),
                            "std" => $attributes_arr_all,
                            "value" => $attributes_arr,
                        ),
                        array(
                            "type" => "dropdown",
                            "heading" => esc_html__("Show Price Filter", 'na-nano'),
                            "param_name" => "show_price_filter",
                            "std" => 1,
                            "dependency" => Array('element' => 'show_filter', 'value' => array('1')),
                            "value" => array(
                                esc_html__('No', 'na-nano' ) => 0,
                                esc_html__('Yes', 'na-nano' ) => 1,
                            ),
                        ),
                        array(
                            'type' => 'textfield',
                            'heading' => esc_html__('Number of price levels', 'na-nano'),
                            'value' => '5',
                            'std' => '5',
                            'param_name' => 'price_filter_level',
                            "dependency" => Array('element' => 'show_price_filter', 'value' => array('1')),
                            'description' => esc_html__('Number of price levels showing in the filter', 'na-nano'),
                        ),
                        array(
                            'type' => 'textfield',
                            'heading' => esc_html__('Filter range', 'na-nano'),
                            'std' => '100',
                            'value' => '100',
                            'param_name' => 'price_filter_range',
                            "dependency" => Array('element' => 'show_price_filter', 'value' => array('1')),
                            'description' => esc_html__('Range of price filter. Example range equal 100 => price filter are "0$ to 100$", "100$ to 200$"', 'na-nano'),
                        ),
                    )
                )
            );
        }
    }
}