File: /home/dermova/www/india/wp-content/plugins/rit-core/inc/shortcode/rit_tabsproduct.php
<?php
/* ================================================================================== */
/* Products Shortcode
/* ================================================================================== */
function get_TabTitle($type){
switch ($type) {
case 'latest':
return array('title'=>__('Latest',RIT_TEXT_DOMAIN));
case 'featured':
return array('title'=>__('Featured',RIT_TEXT_DOMAIN));
case 'toprate':
return array('title'=> __('Top Rated',RIT_TEXT_DOMAIN));
case 'best-selling':
return array('title'=>__('BestSeller',RIT_TEXT_DOMAIN));
case 'onsale':
return array('title'=>__('Onsale',RIT_TEXT_DOMAIN));
break;
}
}
if (!function_exists('rit_shortcode_tabsproduct')) {
function rit_shortcode_tabsproduct($atts, $content) {
$outputs='';
$atts = shortcode_atts(array(
'post_type' => 'product',
'pagination' => 'simple',
'column' => 'col-md-3 col-sm-6',
'posts_per_page' => 4,
'meta_query' => '',
'list_type' => 'latest,featured,toprate',
'products_types' => 'products_carousel',
'carousel_style' => 'false',
'title_align' => 'center',
'paged' => -1,
'ignore_sticky_posts' => 1,
'show' => '',
'style' =>'default',
'bg_box_css' =>'',
'element_custom_class' => '',
'category' =>'',
'padding_bottom_module' => '0px'
), $atts);
//category
if(isset($atts['category']) && empty($atts['category'])){
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'tax_query' => array(
array(
'taxonomy' => 'product_cat'
)
)
);
$query_shop = new WP_Query($args);
$atts['tax_query'] = $query_shop;
}
else{
$args['tax_query'] = array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $atts['category']
);
$atts['tax_query'] = $args;
}
//list tabs
$types = explode(',',$atts['list_type']);
foreach ($types as $type) {
$list_types[$type] = get_TabTitle($type);
}
ob_start();
?>
<div data-example-id="togglable-tabs" role="tabpanel" class="product-tabs widget">
<div class="widget-title <?php echo $atts['title_align'];?>">
<ul role="tablist" class="nav nav-tabs">
<?php
$count=0;
foreach ($list_types as $key =>$list) {
?>
<li class="<?php echo ($count==0)?'active':''; ?>" role="presentation">
<a class="tabs-title-product" aria-expanded="true" data-toggle="tab" role="tab" href="#<?php echo $key; ?>">
<span><?php echo $list['title']; ?></span>
</a>
</li>
<?php
$count++;
}
?>
</ul>
</div>
<div class="tab-content widget-content clearfix" id="tabs_product">
<?php $count=0; ?>
<?php foreach ($list_types as $key => $list) {
switch ($key) {
case 'best-selling':
$atts['meta_key'] = 'total_sales';
$meta_query = WC()->query->get_meta_query();
$atts['meta_query'] = $meta_query;
break;
case 'toprate':
add_filter( 'posts_clauses', array( WC()->query, 'order_by_rating_post_clauses' ) );
$meta_query = WC()->query->get_meta_query();
$atts['meta_query'] = $meta_query;
break;
case 'latest':
$meta_query = WC()->query->visibility_meta_query();
$meta_query = WC()->query->stock_status_meta_query();
$atts['meta_query'] = $meta_query;
break;
case 'featured':
$meta_query = WC()->query->get_meta_query();
$meta_query[] = array(
'key' => '_featured',
'value' => 'yes'
);
$atts['meta_query'] = $meta_query;
break;
case 'onsale':
$product_ids_on_sale = wc_get_product_ids_on_sale();
$atts['post__in'] = $product_ids_on_sale;
$meta_query = WC()->query->get_meta_query();
$atts['meta_query'] = $meta_query;
break;
}
?>
<div id="<?php echo $key; ?>" class="tab-pane <?php echo ($count==0)?' active':''; ?>" role="tabpanel">
<?php
switch ($atts['products_types']) {
case 'products_carousel':
$output = ri_get_template_part('product-layout/shortcode', 'product-carousel', array('atts' => $atts));
break;
case 'products_grid':
$output = ri_get_template_part('product-layout/shortcode', 'product-grid', array('atts' => $atts));
break;
case 'products_list':
$output = ri_get_template_part('product-layout/shortcode', 'product-list', array('atts' => $atts));
break;
default:
$output = ri_get_template_part('product-layout/shortcode', 'product-list', array('atts' => $atts));
break;
}
?>
</div>
<?php $count++;
?>
<?php } ?>
</div>
</div>
<?php
$output = ob_get_contents();
ob_end_clean();
return $output;
}
}
add_shortcode('rit_tabsproduct', 'rit_shortcode_tabsproduct');
add_action('vc_before_init', 'rit_tabsproduct_integrate_vc');
if (!function_exists('rit_tabsproduct_integrate_vc')) {
function rit_tabsproduct_integrate_vc()
{
$show_tab = array(
array('latest', __('Latest Products', RIT_TEXT_DOMAIN)),
array('featured', __('Featured Products', RIT_TEXT_DOMAIN )),
array('best-selling', __('Best Selling Products', RIT_TEXT_DOMAIN )),
array('toprate', __('TopRated Products', RIT_TEXT_DOMAIN )),
array('onsale', __('Special Products', RIT_TEXT_DOMAIN ))
);
vc_map(
array(
'name' => __('RIT Tabs Products', RIT_TEXT_DOMAIN),
'base' => 'rit_tabsproduct',
'icon' => 'icon-rit',
'category' => __('RIT', RIT_TEXT_DOMAIN),
'description' => __('Show multiple tabs products .', RIT_TEXT_DOMAIN),
'params' => array(
array(
'type' => 'dropdown',
'heading' => __('Title align', RIT_TEXT_DOMAIN),
'value' => array(
__('Center', RIT_TEXT_DOMAIN) => 'center',
__('Left', RIT_TEXT_DOMAIN) => 'left',
__('Right', RIT_TEXT_DOMAIN) => 'right',
__('Hidden', RIT_TEXT_DOMAIN) => 'hidden'
),
'param_name' => 'title_align',
),
array(
'type' => 'sorted_list',
'heading' => __('Show Tab', RIT_TEXT_DOMAIN),
'param_name' => 'list_type',
'description' => __('Control teasers look. Enable blocks and place them in desired order.', RIT_TEXT_DOMAIN),
'value' => 'latest,featured,toprate',
'options' => $show_tab
),
array(
'type' => 'rit_product_categories',
'heading' => __( 'Category',RIT_TEXT_DOMAIN ),
'param_name' => 'category',
'description' => __( 'Product category list',RIT_TEXT_DOMAIN),
),
array(
'type' => 'dropdown',
'heading' => __('Select type', RIT_TEXT_DOMAIN),
'value' => array(
__('Carousel', RIT_TEXT_DOMAIN) => 'products_carousel',
__('Grid', RIT_TEXT_DOMAIN) => 'products_grid',
__('List', RIT_TEXT_DOMAIN) => 'products_list'
),
'param_name' => 'products_types',
),
array(
'type' => 'checkbox',
'heading' => __("Pagination Carousel:", RIT_TEXT_DOMAIN),
'param_name' => 'carousel_style',
'value' => array(
__('Yes', RIT_TEXT_DOMAIN) => 'true')
),
array(
'type' => 'dropdown',
'heading' => __('Column count', RIT_TEXT_DOMAIN),
'value' => array(
__('1 Columns', RIT_TEXT_DOMAIN) => 'col-md-12 col-sm-12',
__('2 Columns', RIT_TEXT_DOMAIN) => 'col-md-6 col-sm-6',
__('3 Columns', RIT_TEXT_DOMAIN) => 'col-md-4 col-sm-6',
__('4 Columns', RIT_TEXT_DOMAIN) => 'col-md-3 col-sm-6',
__('6 Columns', RIT_TEXT_DOMAIN) => 'col-md-2 col-sm-4'
),
'std' => 'col-md-3 col-sm-6',
'param_name' => 'column',
),
array(
'type' => 'textfield',
'heading' => __('Number of Post', RIT_TEXT_DOMAIN),
'value' => 6,
'param_name' => 'posts_per_page',
),
array(
'type' => 'textfield',
'heading' => __('Custom Class', RIT_TEXT_DOMAIN),
'value' => '',
'param_name' => 'element_custom_class',
'description' => __('You can use the custom CSS class for this module', RIT_TEXT_DOMAIN),
),
array(
'type' => 'textfield',
'heading' => __('Bottom padding for the module', RIT_TEXT_DOMAIN),
'value' => '35px',
'param_name' => 'padding_bottom_module',
)
)
)
);
}
}