PluginProbe
Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder / 2.0.4
Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder v2.0.4
3.1.4 3.0.8 3.0.9 3.1.0 3.1.2 3.1.3 3.0.7 3.0.5 3.0.4 3.0.3 3.0.2 trunk 1.5.0 1.5.1 1.5.2 1.6.1 1.6.2 1.6.3 1.6.4 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 All 93 releases
ultimate-store-kit / modules / sub-category-carousel / widgets / sub-category-carousel.php

sub-category-carousel.php in Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder 2.0.4, at modules/sub-category-carousel/widgets/sub-category-carousel.php

773 lines 29.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace UltimateStoreKit\Modules\SubCategoryCarousel\Widgets;
4
5 use Elementor\Controls_Manager;
6 use Elementor\Group_Control_Background;
7 use Elementor\Group_Control_Border;
8 use Elementor\Group_Control_Box_Shadow;
9 use Elementor\Group_Control_Image_Size;
10 use Elementor\Group_Control_Typography;
11 use Elementor\Utils;
12 use UltimateStoreKit\Base\Module_Base;
13 use UltimateStoreKit\Traits\Global_Terms_Query_Controls;
14 use UltimateStoreKit\traits\Global_Widget_Controls;
15 use UltimateStoreKit\traits\Global_Widget_Template;
16
17
18
19 if (!defined('ABSPATH')) {
20 exit;
21 }
22 // Exit if accessed directly
23
24 class Sub_Category_Carousel extends Module_Base {
25 use Global_Widget_Controls;
26 use Global_Terms_Query_Controls;
27 use Global_Widget_Template;
28 public function get_name() {
29 return 'usk-sub-category-carousel';
30 }
31
32 public function get_title() {
33 return BDTUSK . esc_html__('Sub Category Carousel', 'ultimate-store-kit');
34 }
35
36 public function get_icon() {
37 return 'usk-widget-icon usk-icon-sub-category-carousel';
38 }
39
40 public function get_categories() {
41 return ['ultimate-store-kit'];
42 }
43
44 public function get_keywords() {
45 return ['ultimate-store-kit', 'shop', 'store', 'sub', 'heading', 'product'];
46 }
47
48 public function get_style_depends() {
49 if ($this->usk_is_edit_mode()) {
50 return ['usk-all-styles'];
51 } else {
52 return ['usk-font', 'usk-sub-category-carousel'];
53 }
54 }
55
56 public function get_script_depends() {
57 if ($this->usk_is_edit_mode()) {
58 return ['usk-all-styles'];
59 } else {
60 return ['usk-sub-category-carousel'];
61 }
62 }
63 // public function get_custom_help_url() {
64 // return 'https://youtu.be/ksy2uZ5Hg3M';
65 // }
66
67 protected function register_controls() {
68 $this->start_controls_section(
69 'section_content_layout',
70 [
71 'label' => esc_html__('Layout', 'ultimate-store-kit'),
72 ]
73 );
74 $this->add_responsive_control(
75 'columns',
76 [
77 'label' => __('Columns', 'ultimate-store-kit'),
78 'type' => Controls_Manager::SELECT,
79 'default' => 3,
80 'tablet_default' => 2,
81 'mobile_default' => 1,
82 'options' => [
83 1 => '1',
84 2 => '2',
85 3 => '3',
86 4 => '4',
87 5 => '5',
88 6 => '6',
89 ],
90 ]
91 );
92 $this->add_control(
93 'alignment',
94 [
95 'label' => __('Title', 'ultimate-store-kit'),
96 'type' => Controls_Manager::HIDDEN,
97 'default' => 'traditional',
98 ]
99 );
100 $this->add_responsive_control(
101 'items_gap',
102 [
103 'label' => esc_html__('Item Gap', 'ultimate-store-kit'),
104 'type' => Controls_Manager::SLIDER,
105 'default' => [
106 'size' => 30,
107 ],
108 'range' => [
109 'px' => [
110 'min' => 0,
111 'max' => 100,
112 ],
113 ],
114 'tablet_default' => [
115 'size' => 20,
116 ],
117 'mobile_default' => [
118 'size' => 20,
119 ],
120 ]
121 );
122 $this->add_control(
123 'title_tags',
124 [
125 'label' => esc_html__('Title HTML Tag', 'ultimate-store-kit'),
126 'type' => Controls_Manager::SELECT,
127 'default' => 'h3',
128 'options' => ultimate_store_kit_title_tags(),
129 ]
130 );
131 $this->add_group_control(
132 Group_Control_Image_Size::get_type(),
133 [
134 'name' => 'category_thumbnail',
135 'label' => esc_html__('Image Size', 'ultimate-store-kit'),
136 'exclude' => ['custom'],
137 'default' => 'medium',
138 ]
139 );
140
141 $this->add_responsive_control(
142 'item_flex_direction',
143 [
144 'label' => esc_html__( 'Direction', 'ultimate-store-kit' ),
145 'type' => Controls_Manager::CHOOSE,
146 'options' => [
147 'row' => [
148 'title' => esc_html__( 'Row - horizontal', 'ultimate-store-kit' ),
149 'icon' => 'eicon-arrow-right',
150 ],
151 'column' => [
152 'title' => esc_html__( 'Column - vertical', 'ultimate-store-kit' ),
153 'icon' => 'eicon-arrow-down',
154 ],
155 'row-reverse' => [
156 'title' => esc_html__( 'Row - reversed', 'ultimate-store-kit' ),
157 'icon' => 'eicon-arrow-left',
158 ],
159 'column-reverse' => [
160 'title' => esc_html__( 'Column - reversed', 'ultimate-store-kit' ),
161 'icon' => 'eicon-arrow-up',
162 ],
163 ],
164 'selectors' => [
165 '{{WRAPPER}} .usk-sub-category-carousel .usk-item' => 'flex-direction: {{VALUE}};',
166 ],
167 ]
168 );
169
170 $this->add_responsive_control(
171 'text_align',
172 [
173 'label' => esc_html__( 'Text Align', 'ultimate-store-kit' ),
174 'type' => Controls_Manager::CHOOSE,
175 'options' => [
176 'left' => [
177 'title' => esc_html__( 'Left', 'ultimate-store-kit' ),
178 'icon' => 'eicon-text-align-left',
179 ],
180 'center' => [
181 'title' => esc_html__( 'Center', 'ultimate-store-kit' ),
182 'icon' => 'eicon-text-align-center',
183 ],
184 'right' => [
185 'title' => esc_html__( 'Right', 'ultimate-store-kit' ),
186 'icon' => 'eicon-text-align-right',
187 ],
188 'justify' => [
189 'title' => esc_html__( 'Justify', 'ultimate-store-kit' ),
190 'icon' => 'eicon-text-align-justify',
191 ],
192 ],
193 'selectors' => [
194 '{{WRAPPER}} .usk-sub-category-carousel .usk-content' => 'text-align: {{VALUE}};',
195 ],
196 ]
197 );
198 $this->end_controls_section();
199 $this->start_controls_section(
200 'section_term_query',
201 [
202 'label' => __('Query', 'ultimate-store-kit'),
203 'tab' => Controls_Manager::TAB_CONTENT,
204 ]
205 );
206
207 $this->start_controls_tabs(
208 'tabs_terms_include_exclude',
209 []
210 );
211 $this->start_controls_tab(
212 'tab_term_include',
213 [
214 'label' => __('Include', 'ultimate-store-kit'),
215 ]
216 );
217
218 $this->add_control(
219 'cats_include_by_id',
220 [
221 'label' => __('Categories', 'ultimate-store-kit'),
222 'type' => Controls_Manager::SELECT2,
223 'multiple' => true,
224 'label_block' => true,
225 'options' => ultimate_store_kit_get_only_parent_cats('product_cat'),
226 ]
227 );
228
229 $this->end_controls_tab();
230
231 $this->start_controls_tab(
232 'tab_term_exclude',
233 [
234 'label' => __('Exclude', 'ultimate-store-kit'),
235 ]
236 );
237
238 $this->add_control(
239 'cats_exclude_by_id',
240 [
241 'label' => __('Categories', 'ultimate-store-kit'),
242 'type' => Controls_Manager::SELECT2,
243 'multiple' => true,
244 'label_block' => true,
245 'options' => ultimate_store_kit_get_only_parent_cats('product_cat'),
246 ]
247 );
248
249 $this->end_controls_tab();
250 $this->end_controls_tabs();
251 $this->add_control(
252 'orderby',
253 [
254 'label' => __('Order By', 'ultimate-store-kit'),
255 'type' => Controls_Manager::SELECT,
256 'default' => 'name',
257 'options' => [
258 'name' => esc_html__('Name', 'ultimate-store-kit'),
259 'count' => esc_html__('Count', 'ultimate-store-kit'),
260 'slug' => esc_html__('Slug', 'ultimate-store-kit'),
261 ],
262 ]
263 );
264
265 $this->add_control(
266 'order',
267 [
268 'label' => __('Order', 'ultimate-store-kit'),
269 'type' => Controls_Manager::SELECT,
270 'default' => 'desc',
271 'options' => [
272 'desc' => __('Descending', 'ultimate-store-kit'),
273 'asc' => __('Ascending', 'ultimate-store-kit'),
274 ],
275 ]
276 );
277 $this->add_control(
278 'hide_empty',
279 [
280 'label' => __('Hide Empty', 'ultimate-store-kit'),
281 'type' => Controls_Manager::SWITCHER,
282 ]
283 );
284
285 $this->end_controls_section();
286 $this->register_global_controls_carousel_navigation();
287 $this->register_global_controls_carousel_settings();
288
289 $this->start_controls_section(
290 'section_content_thumbs_settings',
291 [
292 'label' => __('Image Settings', 'ultimate-store-kit'),
293 'tab' => Controls_Manager::TAB_CONTENT,
294 ]
295 );
296
297 $this->add_control(
298 'thumbs_autoplay',
299 [
300 'label' => __('Auto Play', 'ultimate-store-kit'),
301 'type' => Controls_Manager::SWITCHER,
302 'label_on' => __('Yes', 'ultimate-store-kit'),
303 'label_off' => __('No', 'ultimate-store-kit'),
304 'return_value' => 'yes',
305 'default' => 'yes',
306 ]
307 );
308
309 $this->add_control(
310 'thumbs_loop',
311 [
312 'label' => __('Loop', 'ultimate-store-kit'),
313 'type' => Controls_Manager::SWITCHER,
314 'label_on' => __('Yes', 'ultimate-store-kit'),
315 'label_off' => __('No', 'ultimate-store-kit'),
316 'return_value' => 'yes',
317 'default' => 'yes',
318 ]
319 );
320
321 $this->add_control(
322 'thumbs_autoplay_speed',
323 [
324 'label' => __('Delay', 'ultimate-store-kit'),
325 'type' => Controls_Manager::NUMBER,
326 'min' => 0,
327 'max' => 10000,
328 'step' => 5,
329 'default' => 1500,
330 'dynamic' => ['active' => true],
331 'condition' => [
332 'thumbs_autoplay' => 'yes'
333 ]
334 ]
335 );
336
337 $this->add_responsive_control(
338 'thumbs_slide_speed',
339 [
340 'label' => __('Speed', 'ultimate-store-kit'),
341 'type' => Controls_Manager::SLIDER,
342 'size_units' => ['px'],
343 'range' => [
344 'px' => [
345 'min' => 0,
346 'max' => 5000,
347 'step' => 1,
348 ]
349 ],
350 'default' => [
351 'unit' => 'px',
352 'size' => 1500,
353 ]
354 ]
355 );
356
357 $this->add_control(
358 'thumbs_effect',
359 [
360 'label' => __('Effect', 'ultimate-store-kit'),
361 'type' => Controls_Manager::SELECT,
362 'options' => [
363 'fade' => __('Fade', 'ultimate-store-kit'),
364 'slide' => __('Slide', 'ultimate-store-kit'),
365 'creative' => __('Creative', 'ultimate-store-kit'),
366 ],
367 'default' => 'fade',
368 'dynamic' => ['active' => true],
369 ]
370 );
371 //creative effect control
372 $this->add_control(
373 'creative_effect',
374 [
375 'label' => esc_html__( 'Creative Effect', 'bdthemes-prime-slider' ),
376 'type' => Controls_Manager::SELECT,
377 'default' => 'creative-1',
378 'options' => [
379 'creative-1' => esc_html__( 'Creative 1', 'bdthemes-prime-slider' ),
380 'creative-2' => esc_html__( 'Creative 2', 'bdthemes-prime-slider' ),
381 'creative-3' => esc_html__( 'Creative 3', 'bdthemes-prime-slider' ),
382 'creative-4' => esc_html__( 'Creative 4', 'bdthemes-prime-slider' ),
383 'creative-5' => esc_html__( 'Creative 5', 'bdthemes-prime-slider' ),
384 ],
385 'condition' => [
386 'thumbs_effect' => 'creative',
387 ],
388 ]
389 );
390
391 $this->end_controls_section();
392
393 /**
394 * Style Tab
395 */
396 $this->start_controls_section(
397 'section_style_item',
398 [
399 'label' => esc_html__('Item', 'ultimate-store-kit'),
400 'tab' => Controls_Manager::TAB_STYLE,
401 ]
402 );
403 $this->start_controls_tabs(
404 'item_tabs'
405 );
406 $this->start_controls_tab(
407 'item_tab_normal',
408 [
409 'label' => esc_html__('Normal', 'ultimate-store-kit'),
410 ]
411 );
412 $this->add_group_control(
413 Group_Control_Background::get_type(),
414 [
415 'name' => 'item_background',
416 'selector' => '{{WRAPPER}} .usk-sub-category-carousel .usk-item',
417 ]
418 );
419
420 $this->add_group_control(
421 Group_Control_Border::get_type(),
422 [
423 'name' => 'item_border',
424 'label' => esc_html__('Border', 'ultimate-store-kit'),
425 'selector' => '{{WRAPPER}} .usk-sub-category-carousel .usk-item',
426 'separator' => 'before',
427 ]
428 );
429 $this->add_responsive_control(
430 'item_radius',
431 [
432 'label' => esc_html__('Border Radius', 'ultimate-store-kit'),
433 'type' => Controls_Manager::DIMENSIONS,
434 'size_units' => ['px', '%', 'em'],
435 'selectors' => [
436 '{{WRAPPER}} .usk-sub-category-carousel .usk-item' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
437 ],
438 ]
439 );
440 $this->add_responsive_control(
441 'item_padding',
442 [
443 'label' => esc_html__('Padding', 'ultimate-store-kit'),
444 'type' => Controls_Manager::DIMENSIONS,
445 'size_units' => ['px', '%', 'em'],
446 'selectors' => [
447 '{{WRAPPER}} .usk-sub-category-carousel .usk-item' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
448 ],
449 ]
450 );
451 $this->add_responsive_control(
452 'item_margin',
453 [
454 'label' => esc_html__('Margin', 'ultimate-store-kit'),
455 'type' => Controls_Manager::DIMENSIONS,
456 'size_units' => ['px', '%', 'em'],
457 'selectors' => [
458 '{{WRAPPER}} .usk-sub-category-carousel .usk-item' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
459 ],
460 ]
461 );
462 $this->add_responsive_control(
463 'space_between',
464 [
465 'label' => esc_html__( 'Space Between', 'ultimate-store-kit' ),
466 'type' => Controls_Manager::SLIDER,
467 'size_units' => [ 'px', 'em', '%' ],
468 'selectors' => [
469 '{{WRAPPER}} .usk-sub-category-carousel .usk-item' => 'gap: {{SIZE}}{{UNIT}};',
470 ],
471 ]
472 );
473
474 $this->add_group_control(
475 Group_Control_Box_Shadow::get_type(),
476 [
477 'name' => 'item_shadow',
478 'selector' => '{{WRAPPER}} .usk-sub-category-carousel .usk-item',
479 ]
480 );
481
482 $this->end_controls_tab();
483 $this->start_controls_tab(
484 'item_tab_hover',
485 [
486 'label' => esc_html__('Hover', 'ultimate-store-kit'),
487 ]
488 );
489 $this->add_control(
490 'item_hover_border_color',
491 [
492 'label' => esc_html__('Border Color', 'ultimate-store-kit'),
493 'type' => Controls_Manager::COLOR,
494 'selectors' => [
495 '{{WRAPPER}} .usk-sub-category-carousel .usk-item:hover' => 'border-color: {{VALUE}}',
496 ],
497 ]
498 );
499 $this->add_group_control(
500 Group_Control_Box_Shadow::get_type(),
501 [
502 'name' => 'item_hover_shadow',
503 'selector' => '{{WRAPPER}} .usk-sub-category-carousel .usk-item:hover',
504 ]
505 );
506 $this->end_controls_tab();
507 $this->end_controls_tabs();
508 $this->end_controls_section();
509 $this->start_controls_section(
510 'section_style_image',
511 [
512 'label' => esc_html__('Image', 'ultimate-store-kit'),
513 'tab' => Controls_Manager::TAB_STYLE,
514 ]
515 );
516
517 $this->add_group_control(
518 Group_Control_Border::get_type(),
519 [
520 'name' => 'image_border',
521 'label' => esc_html__('Image Border', 'ultimate-store-kit'),
522 'selector' => '{{WRAPPER}} .usk-sub-category-carousel .usk-image-slider .swiper-slide',
523 ]
524 );
525
526 $this->add_responsive_control(
527 'image_border_radius',
528 [
529 'label' => esc_html__('Border Radius', 'ultimate-store-kit'),
530 'type' => Controls_Manager::DIMENSIONS,
531 'size_units' => ['px', '%'],
532 'selectors' => [
533 '{{WRAPPER}} .usk-sub-category-carousel .usk-image-slider .swiper-slide' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
534 ],
535 ]
536 );
537
538 $this->end_controls_section();
539 $this->start_controls_section(
540 'section_style_title',
541 [
542 'label' => esc_html__('Title', 'ultimate-store-kit'),
543 'tab' => Controls_Manager::TAB_STYLE,
544 ]
545 );
546 $this->add_control(
547 'title_color',
548 [
549 'label' => esc_html__('Color', 'ultimate-store-kit'),
550 'type' => Controls_Manager::COLOR,
551 'selectors' => [
552 '{{WRAPPER}} .usk-sub-category-carousel .usk-name' => 'color: {{VALUE}}',
553 ],
554 ]
555 );
556 $this->add_responsive_control(
557 'title_margin',
558 [
559 'label' => esc_html__('Margin', 'ultimate-store-kit'),
560 'type' => Controls_Manager::DIMENSIONS,
561 'size_units' => ['px', '%'],
562 'selectors' => [
563 '{{WRAPPER}} .usk-sub-category-carousel .usk-name' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
564 ],
565 ]
566 );
567 $this->add_group_control(
568 Group_Control_Typography::get_type(),
569 [
570 'name' => 'title_typography',
571 'label' => esc_html__('Typography', 'ultimate-store-kit'),
572 'selector' => '{{WRAPPER}} .usk-sub-category-carousel .usk-name',
573 ]
574 );
575 $this->end_controls_section();
576 $this->start_controls_section(
577 'section_style_sub_category',
578 [
579 'label' => esc_html__('Sub Category', 'ultimate-store-kit'),
580 'tab' => Controls_Manager::TAB_STYLE,
581 ]
582 );
583
584 $this->add_control(
585 'sub_category_color',
586 [
587 'label' => esc_html__('Color', 'ultimate-store-kit'),
588 'type' => Controls_Manager::COLOR,
589 'selectors' => [
590 '{{WRAPPER}} .usk-sub-category-carousel .usk-list a' => 'color: {{VALUE}}',
591 ],
592 ]
593 );
594
595 $this->add_control(
596 'hover_sub_category_color',
597 [
598 'label' => esc_html__('Hover Color', 'ultimate-store-kit'),
599 'type' => Controls_Manager::COLOR,
600 'selectors' => [
601 '{{WRAPPER}} .usk-sub-category-carousel .usk-list a:hover' => 'color: {{VALUE}};',
602 ],
603 ]
604 );
605
606 $this->add_responsive_control(
607 'sub_category_margin',
608 [
609 'label' => esc_html__('Margin', 'ultimate-store-kit'),
610 'type' => Controls_Manager::DIMENSIONS,
611 'size_units' => ['px', '%'],
612 'selectors' => [
613 '{{WRAPPER}} .usk-sub-category-carousel .usk-list li' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
614 ],
615 ]
616 );
617 $this->add_group_control(
618 Group_Control_Typography::get_type(),
619 [
620 'name' => 'sub_category_typography',
621 'label' => esc_html__('Typography', 'ultimate-store-kit'),
622 'selector' => '{{WRAPPER}} .usk-sub-category-carousel .usk-list a',
623 ]
624 );
625 $this->end_controls_section();
626 $this->start_controls_section(
627 'section_style_all_category',
628 [
629 'label' => esc_html__('Read More', 'ultimate-store-kit'),
630 'tab' => Controls_Manager::TAB_STYLE,
631 ]
632 );
633
634 $this->add_control(
635 'all_category_color',
636 [
637 'label' => esc_html__('Color', 'ultimate-store-kit'),
638 'type' => Controls_Manager::COLOR,
639 'selectors' => [
640 '{{WRAPPER}} .usk-sub-category-carousel .usk-link-btn a' => 'color: {{VALUE}}',
641 ],
642 ]
643 );
644
645 $this->add_control(
646 'hover_all_category_color',
647 [
648 'label' => esc_html__('Hover Color', 'ultimate-store-kit'),
649 'type' => Controls_Manager::COLOR,
650 'selectors' => [
651 '{{WRAPPER}} .usk-sub-category-carousel .usk-link-btn a:hover' => 'color: {{VALUE}};',
652 ],
653 ]
654 );
655
656 $this->add_responsive_control(
657 'all_category_margin',
658 [
659 'label' => esc_html__('Margin', 'ultimate-store-kit'),
660 'type' => Controls_Manager::DIMENSIONS,
661 'size_units' => ['px', '%'],
662 'selectors' => [
663 '{{WRAPPER}} .usk-sub-category-carousel .usk-link-btn a' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
664 ],
665 ]
666 );
667 $this->add_group_control(
668 Group_Control_Typography::get_type(),
669 [
670 'name' => 'all_category_typography',
671 'label' => esc_html__('Typography', 'ultimate-store-kit'),
672 'selector' => '{{WRAPPER}} .usk-sub-category-carousel .usk-link-btn a',
673 ]
674 );
675 $this->end_controls_section();
676
677 $this->register_global_controls_navigation_style();
678 }
679
680 public function render_items() {
681 $settings = $this->get_settings_for_display();
682 $args = [
683 'taxonomy' => 'product_cat',
684 'orderby' => isset($settings['orderby']) ? $settings['orderby'] : 'name',
685 'order' => isset($settings['order']) ? $settings['order'] : 'ASC',
686 'hide_empty' => isset($settings['hide_empty']) && ($settings['hide_empty'] == 'yes') ? 0 : 1,
687 ];
688 if (isset($settings['cats_include_by_id']) && !empty($settings['cats_include_by_id'])) {
689 $args['include'] = $settings['cats_include_by_id'];
690 }
691 if (isset($settings['cats_exclude_by_id']) && !empty($settings['cats_exclude_by_id'])) {
692 $args['exclude'] = $settings['cats_exclude_by_id'];
693 }
694 // print_r($args);
695 $taxonomies = get_terms($args);
696 if (!(empty($taxonomies))) :
697 $index = 50;
698 foreach ($taxonomies as $category) :
699 if ($category->parent == 0 && get_term_children($category->term_id, 'product_cat')) :
700 $this->add_render_attribute('sub-category-item', [
701 'class' => [
702 'usk-item swiper-slide'
703 ],
704 'data-settings' => [
705 wp_json_encode(array_filter([
706 "autoplay" => ("yes" == $settings["thumbs_autoplay"]) ? ["delay" => $settings["thumbs_autoplay_speed"] + $index += rand(500, 1500)] : false,
707 "loop" => ($settings["thumbs_loop"] == "yes") ? true : false,
708 "speed" => $settings["thumbs_slide_speed"]["size"],
709 "effect" => $settings["thumbs_effect"],
710 "creativeEffect" => isset($settings["creative_effect"]) ? $settings["creative_effect"] : false,
711 ]))
712 ]
713 ], null, true);
714 ?>
715 <div <?php $this->print_render_attribute_string('sub-category-item'); ?>>
716 <div class="swiper usk-image-slider">
717 <div class="swiper-wrapper">
718 <?php
719 $parentcategory_thumb_id = get_term_meta($category->term_id, 'thumbnail_id', true);
720 $images = [$parentcategory_thumb_id];
721
722 foreach ($taxonomies as $subcategory) :
723 if ($subcategory->parent == $category->term_id) {
724 $subcategory_thumb_id = get_term_meta($subcategory->term_id, 'thumbnail_id', true);
725 $images[] = $subcategory_thumb_id;
726 }
727 endforeach;
728
729 foreach ($images as $image_id) :
730 $img_url = wp_get_attachment_image_url($image_id, $settings['category_thumbnail_size']);
731 if (!(empty($img_url))) : ?>
732 <div class="swiper-slide">
733 <div class="usk-image-wrap">
734 <img class="usk-img" src="<?php echo esc_url($img_url); ?>" />
735 </div>
736 </div>
737 <?php
738 endif;
739 endforeach;
740 ?>
741 </div>
742 </div>
743 <div class="usk-content">
744
745 <?php printf('<%1$s class="usk-name">%2$s</%1$s>', esc_attr($settings['title_tags']), esc_html($category->name)); ?>
746 <div class="usk-list">
747 <?php
748 foreach ($taxonomies as $key => $subcategory) :
749 if (($subcategory->parent == $category->term_id) && ($subcategory->count > 0)) {
750 printf('<a href="%1$s">%2$s</a>', esc_url(get_term_link($subcategory->term_id, 'product_cat')), esc_html($subcategory->name));
751 }
752 endforeach;
753 ?>
754 </div>
755
756 <div class="usk-link-btn">
757 <?php printf('<a href="%2$s"><span>%1$s</span><i class="usk-icon-arrow-right-8"></i>', esc_html__('All ' . $category->name . ''), esc_url(get_term_link($category->term_id, 'product_cat'))); ?>
758 </a>
759 </div>
760 </div>
761 </div>
762 <?php
763 endif;
764 endforeach;
765 endif;
766 }
767 public function render() {
768 $this->register_global_template_carousel_header();
769 $this->render_items();
770 $this->usk_register_global_template_carousel_footer();
771 }
772 }
773