PluginProbe
Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder / 2.0.3
Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder v2.0.3
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 / widgets / sub-category.php

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

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