vc-tabs.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. <?php
  2. /*------------------------------------------------------*/
  3. /* taskereasy Heading
  4. /*------------------------------------------------------*/
  5. vc_map(array(
  6. "name" => esc_html__("Services Tabs", 'taskereasy'),
  7. "base" => "taskereasy_tabs",
  8. 'icon' => get_template_directory_uri() . '/assets/images/favicon-icon/shortcode-icon.png',
  9. "class" => "",
  10. "description" => esc_html__("Add taskereasy Tabs", 'taskereasy'),
  11. "category" => esc_html__('Taskereasy Shortcodes', 'taskereasy'),
  12. "params" => array(
  13. array(
  14. "type" => "dropdown",
  15. "heading" => esc_html__("Style", 'taskereasy'),
  16. "param_name" => "style",
  17. "value" => array('Style 1' => 'style_1', 'Style 2' => 'style_2', 'Style 3' => 'style_3'),
  18. ),
  19. array(
  20. "type" => "textfield",
  21. "heading" => esc_html__("Title", 'taskereasy'),
  22. "param_name" => "title",
  23. "dependency" => array(
  24. "element" => "style",
  25. "value" => "style_2"
  26. ),
  27. ),
  28. array(
  29. "type" => "textarea_safe",
  30. "heading" => esc_html__("Subtitle", 'taskereasy'),
  31. "param_name" => "subtext",
  32. "dependency" => array(
  33. "element" => "style",
  34. "value" => "style_2"
  35. ),
  36. ),
  37. array(
  38. 'type' => 'css_editor',
  39. 'heading' => esc_html__( 'CSS', 'taskereasy' ),
  40. 'param_name' => 'custom_design',
  41. 'group' => esc_html__( 'Design options', 'taskereasy' ),
  42. )
  43. )
  44. ));
  45. add_shortcode( 'taskereasy_tabs', function($atts, $content = null) {
  46. extract(shortcode_atts(array(
  47. 'style' => 'style_1',
  48. 'title' => '',
  49. 'subtext' => '',
  50. 'custom_design' => '',
  51. ), $atts));
  52. $custom_design = vc_shortcode_custom_css_class( $custom_design, ' ' );
  53. $terms = get_terms( 'servicecategories', 'orderby=asc&hide_empty=true&number=5&offset=0' );
  54. $post_taxomnomy = get_term_by( 'slug', 'servicecategories' );
  55. $output = '';
  56. $count = 0;
  57. $counttab = 0;
  58. $service_id = ($style == 'style_1') ? 'services' : 'services-3';
  59. $output .= '<div id="'.esc_attr($service_id).'">';
  60. if($style == 'style_1'){
  61. //Style 1
  62. $output .='
  63. <ul class="nav nav-tabs" id="myTab" role="tablist">';
  64. foreach($terms as $term){
  65. $active = ($count == 0) ? 'active' : '';
  66. $output .='<li class="nav-item"> <a class="nav-link '.esc_attr($active).' '.esc_attr($term->term_id).'" id="'.esc_attr($term->slug).'-tab" data-toggle="tab" href="#'.$term->slug.'" role="tab" aria-controls="'.$term->slug.'" aria-selected="true"> <img src="'.get_term_meta( $term->term_id, 'service_icon', true ).'" alt="'.esc_attr($term->name).'">
  67. '.esc_html($term->name).'
  68. </a> </li>';
  69. $count++;
  70. }
  71. $output .=' <li class="nav-item"> <a class="nav-link" id="more-tab" data-toggle="tab" href="#more" role="tab" aria-controls="more" aria-selected="false"> <img src="'.get_template_directory_uri() . '/assets/images/menu-line.png" alt="'.esc_attr("More").'">'.esc_html__("More", "taskereasy").'</a> </li>
  72. </ul>
  73. <div class="tab-content" id="myTabContent">';
  74. $custom_terms = get_terms('servicecategories');
  75. foreach($custom_terms as $custom_term) {
  76. $args = array(
  77. 'post_type' => 'services',
  78. 'orderby' => 'date',
  79. 'posts_per_page' => 1,
  80. 'tax_query' => array(
  81. array(
  82. 'taxonomy' => 'servicecategories',
  83. 'field' => 'slug',
  84. 'terms' => $custom_term->slug,
  85. ),
  86. ),
  87. );
  88. $loop = new WP_Query($args);
  89. if($loop->have_posts()) {
  90. while($loop->have_posts()) : $loop->the_post();
  91. $activetab = ($counttab == 0) ? 'active' : '';
  92. if(has_post_thumbnail()){
  93. $bg_img = get_the_post_thumbnail_url();
  94. }
  95. $output .= '<div class="tab-pane fade show '.esc_attr($activetab).'" id="'.esc_attr($custom_term->slug) .'" role="tabpanel" aria-labelledby="'.esc_attr($custom_term->slug).'-tab">
  96. <div class="row">
  97. <div class="col-lg-6">
  98. <h3>'.get_the_title().'</h3>
  99. <p>'.taskereasy_custom_excerpt_length(40).'</p>
  100. <a href="'.get_the_permalink().'" class="btn">'.esc_html__("Start Now", "taskereasy").' <i class="fa fa-angle-right"></i></a> </div>
  101. <div class="col-lg-6">
  102. <div class="service-img">
  103. <img src="'.$bg_img.'" alt="'.get_the_title().'">
  104. </div>
  105. </div>
  106. </div>
  107. </div>';
  108. $counttab++;
  109. endwhile;
  110. }
  111. wp_reset_postdata();
  112. }
  113. $output .= '
  114. <div class="tab-pane fade" id="more" role="tabpanel" aria-labelledby="more-tab">
  115. <div class="more-links">
  116. <ul>';
  117. $remain_terms = get_terms( 'servicecategories', 'orderby=asc&hide_empty=true&offset=7' );
  118. foreach($remain_terms as $remain_term){
  119. $output .= '<li class="nav-item"><a href="'.get_term_link($remain_term).'"><img src="'.get_term_meta( $remain_term->term_id, 'service_icon', true ).'" alt="'.$remain_term->name.'">'.$remain_term->name.'</a></li>';
  120. }
  121. $output .= '</ul>
  122. </div>
  123. </div>
  124. </div>';
  125. }elseif($style == 'style_2'){
  126. //Style 2
  127. $output.=
  128. '
  129. <h1 class="services-txt"><span>'.$title.'</span></h1>
  130. <div class="row">
  131. <div class="col col-12 col-md-12">
  132. <div class="services-title3-wrapper">
  133. <h1 class="services-title3"><span>'.$title.'</span></h1>
  134. <p>'.$subtext.'</p>
  135. <div class="vertical-line"></div>
  136. </div>
  137. </div>
  138. <div class="col col-12 col-md-6">
  139. <!-- Nav tabs -->
  140. <ul class="nav nav-tabs services-tabs" role="tablist">';
  141. foreach($terms as $term){
  142. $active = ($count == 0) ? 'active' : '';
  143. $output .='<li class="nav-item"> <a class="nav-link '.$active.' '.$term->term_id.'" id="'.$term->slug.'-tab" data-toggle="tab" href="#'.$term->slug.'" role="tab" aria-controls="'.$term->slug.'" aria-selected="true"> '.$term->name.' </a> </li>';
  144. $count++;
  145. }
  146. $output .='
  147. </ul>
  148. </div>
  149. <div class="col col-12 col-md-6">
  150. <!-- Tab panes -->
  151. <div class="tab-content service-tab-content">';
  152. $custom_terms = get_terms('servicecategories');
  153. foreach($custom_terms as $custom_term) {
  154. wp_reset_query();
  155. $args = array('post_type' => 'services', 'orderby' => 'date',
  156. 'posts_per_page' => 1,
  157. 'tax_query' => array(
  158. array(
  159. 'taxonomy' => 'servicecategories',
  160. 'field' => 'slug',
  161. 'terms' => $custom_term->slug,
  162. ),
  163. ),
  164. );
  165. $loop = new WP_Query($args);
  166. if($loop->have_posts()) {
  167. while($loop->have_posts()) : $loop->the_post();
  168. $activetab = ($counttab == 0) ? 'active' : '';
  169. $output .= '
  170. <div class="tab-pane fade show '.$activetab.'" id="'.$custom_term->slug .'" role="tabpanel" aria-labelledby="'.$custom_term->slug .'-tab">
  171. <h4>'.get_the_title().'</h4>
  172. <p>'.taskereasy_custom_excerpt_length(40).'</p>
  173. <a href="'.get_the_permalink().'" class="btn">'.esc_html__("Start Now", "taskereasy").' <i class="fa fa-angle-right"></i></a>
  174. </div>';
  175. $counttab++;
  176. endwhile;
  177. }
  178. wp_reset_postdata();
  179. }
  180. $output.='
  181. </div>
  182. </div>
  183. </div>';
  184. }else{
  185. $output.=
  186. '<div class="service2-wrpr">
  187. <div class="service2-tab-btns">
  188. <ul class="nav nav-tabs" role="tablist">';
  189. foreach($terms as $term){
  190. $active = ($count == 0) ? 'active' : '';
  191. $output .=
  192. '<li class="nav-item">
  193. <a class="nav-link '.$active.' '.$term->term_id.'" id="'.$term->slug.'-tab" data-toggle="tab" href="#'.$term->slug.'" role="tab" aria-controls="'.$term->slug.'" aria-selected="true">
  194. <img src="'.get_term_meta( $term->term_id, 'service_icon', true ).'" alt="'.$term->name.'">
  195. <span>'.$term->name.'</span>
  196. </a>
  197. </li>';
  198. $count++;
  199. }
  200. $output.='
  201. </ul>
  202. </div>
  203. <div class="tab-content service2-tab">';
  204. $custom_terms = get_terms('servicecategories');
  205. foreach($custom_terms as $custom_term) {
  206. wp_reset_query();
  207. $args = array(
  208. 'post_type' => 'services',
  209. 'orderby' => 'date',
  210. 'posts_per_page' => 1,
  211. 'tax_query' => array(
  212. array(
  213. 'taxonomy' => 'servicecategories',
  214. 'field' => 'slug',
  215. 'terms' => $custom_term->slug,
  216. ),
  217. ),
  218. );
  219. $loop = new WP_Query($args);
  220. if($loop->have_posts()) {
  221. while($loop->have_posts()) : $loop->the_post();
  222. $bg_img = (has_post_thumbnail()) ? get_the_post_thumbnail_url() : '';
  223. $activetab = ($counttab == 0) ? 'active' : '';
  224. $output .= '
  225. <div class="tab-pane fade show '.$activetab.'" id="'.$custom_term->slug .'" role="tabpanel" aria-labelledby="'.$custom_term->slug .'-tab">
  226. <div class="service2-info">
  227. <h3 class="service2-info-hdng">'.get_the_title().'</h3>
  228. <p>'.taskereasy_custom_excerpt_length(40).'</p>
  229. <a href="'.get_the_permalink().'" class="btn">'.esc_html__("Start Now", "taskereasy").' <i class="fa fa-angle-right"></i></a>
  230. </div>
  231. <div class="service2-img" style="background-image:url('.$bg_img.')">
  232. </div>
  233. </div>';
  234. $counttab++;
  235. endwhile;
  236. }
  237. wp_reset_postdata();
  238. }
  239. $output.='
  240. </div>
  241. </div>';
  242. }
  243. $output .= '</div>';
  244. return $output;
  245. });