PluginProbe
WP Directory Kit / 1.5.9
WP Directory Kit v1.5.9
1.5.9 1.5.7 1.5.6 1.5.5 1.5.4 1.5.3 trunk 1.1.0 1.1.6 1.1.8 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.8 All 37 releases
wpdirectorykit / elementor-elements / classes / wdk-listings-carousel.php

wdk-listings-carousel.php in WP Directory Kit 1.5.9, at elementor-elements/classes/wdk-listings-carousel.php

1,423 lines 57.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Wdk\Elementor\Widgets;
4
5 use Wdk\Elementor\Widgets\WdkElementorBase;
6 use Elementor\Widget_Base;
7 use Elementor\Controls_Manager;
8 use Elementor\Utils;
9 use Elementor\Typography;
10 use Elementor\Editor;
11 use Elementor\Plugin;
12 use Elementor\Repeater;
13 use Elementor\Core\Schemes;
14 use Elementor\Icons_Manager;
15 use Elementor\Group_Control_Typography;
16 use Elementor\Group_Control_Border;
17 use Elementor\Group_Control_Box_Shadow;
18 use Elementor\Group_Control_Image_Size;
19
20 if (!defined('ABSPATH'))
21 exit; // Exit if accessed directly
22
23 /**
24 * @since 1.1.0
25 */
26 class WdkListingsCarousel extends WdkElementorBase {
27
28 public function __construct($data = array(), $args = null) {
29
30 \Elementor\Controls_Manager::add_tab(
31 'tab_conf',
32 esc_html__('Settings', 'wpdirectorykit')
33 );
34
35 \Elementor\Controls_Manager::add_tab(
36 'tab_layout',
37 esc_html__('Layout', 'wpdirectorykit')
38 );
39
40 \Elementor\Controls_Manager::add_tab(
41 'tab_content',
42 esc_html__('Main', 'wpdirectorykit')
43 );
44
45 if ($this->is_edit_mode_load()) {
46 $this->enqueue_styles_scripts();
47 }
48
49 parent::__construct($data, $args);
50 }
51
52 /**
53 * Retrieve the widget name.
54 *
55 * @since 1.1.0
56 *
57 * @access public
58 *
59 * @return string Widget name.
60 */
61 public function get_name() {
62 return 'wdk-listings-carousel';
63 }
64
65 /**
66 * Retrieve the widget title.
67 *
68 * @since 1.1.0
69 *
70 * @access public
71 *
72 * @return string Widget title.
73 */
74 public function get_title() {
75 return esc_html__('Wdk Listings Carousel', 'wpdirectorykit');
76 }
77
78 /**
79 * Retrieve the widget icon.
80 *
81 * @since 1.1.0
82 *
83 * @access public
84 *
85 * @return string Widget icon.
86 */
87 public function get_icon() {
88 return 'eicon-post-navigation';
89 }
90
91 /**
92 * Register the widget controls.
93 *
94 * Adds different input fields to allow the user to change and customize the widget settings.
95 *
96 * @since 1.1.0
97 *
98 * @access protected
99 */
100 protected function register_controls() {
101 $this->generate_controls_conf();
102 $this->generate_controls_layout();
103 $this->generate_controls_styles();
104 $this->generate_controls_content();
105
106 $this->insert_pro_message('tab_conf');
107 parent::register_controls();
108 }
109
110 /**
111 * Render the widget output on the frontend.
112 *
113 * Written in PHP and used to generate the final HTML.
114 *
115 * @since 1.1.0
116 *
117 * @access protected
118 */
119 protected function render() {
120 parent::render();
121 $this->data['id_element'] = $this->get_id();
122 $this->data['settings'] = $this->get_settings();
123
124 $this->data['listings_count'] = 0;
125 $this->data['results'] = array();
126 $this->data['pagination_output'] = '';
127 $columns = array('ID', 'location_id', 'category_id', 'post_title', 'post_date', 'search', 'order_by', 'is_featured', 'address');
128 $custom_parameters = array();
129 $skip_postget = TRUE;
130
131 if($this->data['settings']['conf_results_type'] == 'results_listings') {
132 $controller = 'listing';
133 $offset = NULL;
134
135 if(!isset($custom_parameters['order_by'])) {
136 $custom_parameters['order_by'] = $this->data['settings']['conf_order_by'].' '.$this->data['settings']['conf_order'];
137 }
138
139 if(!isset($custom_parameters['conf_order_by_custom'])) {
140 $custom_parameters['order_by'] = $this->data['settings']['conf_order_by_custom'].' '.$this->data['settings']['conf_order'];
141 }
142
143 if(!empty($this->data['settings']['conf_query'])) {
144 $qr_string = trim($this->data['settings']['conf_query'],'?');
145 $string_par = array();
146 parse_str($qr_string, $string_par);
147 $custom_parameters += array_map('trim', $string_par);
148 }
149
150 if($this->data['settings']['only_is_featured'] == 'yes') {
151 $custom_parameters['is_featured'] = 'on';
152 }
153
154
155 if(wmvc_show_data('get_filters_enable', $this->data['settings']) == 'yes') {
156 $skip_postget = FALSE;
157 }
158
159 $external_columns = array('location_id', 'category_id', 'post_title', 'is_featured');
160
161 wdk_prepare_search_query_GET($columns, $controller.'_m', $external_columns, $custom_parameters, $skip_postget);
162 $this->data['results'] = $this->WMVC->listing_m->get_pagination($this->data['settings']['conf_limit'], $offset, array('is_activated' => 1,'is_approved'=>1));
163
164 } else if($this->data['settings']['conf_results_type'] == 'custom_listings') {
165 $listings_ids = array();
166 foreach($this->data['settings']['conf_custom_results'] as $listing) {
167 if(isset($listing['listing_post_id']) && !empty($listing['listing_post_id'])) {
168 $listings_ids [] = $listing['listing_post_id'];
169 }
170 }
171 /* where in */
172 if(!empty($listings_ids)){
173 $this->WMVC->db->where( $this->WMVC->db->prefix.'wdk_listings.post_id IN(' . implode(',', $listings_ids) . ')', null, false);
174 $this->WMVC->db->where(array('is_activated' => 1));
175 $this->WMVC->db->order_by('FIELD('.$this->WMVC->db->prefix.'wdk_listings.post_id, '. implode(',', $listings_ids) . ')');
176 $this->data['results'] = $this->WMVC->listing_m->get();
177 }
178 }
179
180 if(!empty($this->data['results']) && $this->data['listings_count'] == 0)
181 $this->data['listings_count'] = wmvc_count($this->data['results']);
182
183 $this->data['settings']['content_button_icon'] = $this->generate_icon($this->data['settings']['content_button_icon']);
184 $this->data['is_edit_mode'] = false;
185 if(Plugin::$instance->editor->is_edit_mode())
186 $this->data['is_edit_mode'] = true;
187
188 $this->view('wdk-listings-carousel', $this->data, true);
189
190 }
191
192
193 private function generate_controls_conf() {
194 $this->start_controls_section(
195 'tab_conf_main_section',
196 [
197 'label' => esc_html__('Main', 'wpdirectorykit'),
198 'tab' => 'tab_conf',
199 ]
200 );
201
202 $this->add_control(
203 'conf_results_type',
204 [
205 'label' => __( 'Carousel type', 'wpdirectorykit' ),
206 'type' => \Elementor\Controls_Manager::SELECT,
207 'default' => 'results_listings',
208 'options' => [
209 'results_listings' => __( 'Results Listings', 'wpdirectorykit' ),
210 'custom_listings' => __( 'Specific Listings', 'wpdirectorykit' ),
211 ],
212 'separator' => 'after',
213 ]
214 );
215
216 $this->add_control(
217 'important_note',
218 [
219 'label' => '',
220 'type' => \Elementor\Controls_Manager::RAW_HTML,
221 /* translators: 1: URL. */
222 'raw' => wdk_sprintf(__( 'Edit Result Card Designer <a href="%1$s" target="_blank"> open </a>', 'wpdirectorykit' ), admin_url('admin.php?page=wdk_resultitem')),
223 'content_classes' => 'wdk_elementor_hint',
224 'separator' => 'after',
225 ]
226 );
227
228 $this->add_control(
229 'important_note2',
230 [
231 'label' => '',
232 'type' => \Elementor\Controls_Manager::RAW_HTML,
233 /* translators: 1: URL. */
234 'raw' => wdk_sprintf(__( 'Manage Listings <a href="%1$s" target="_blank"> open </a>', 'wpdirectorykit' ), admin_url('admin.php?page=wdk')),
235 'content_classes' => 'wdk_elementor_hint',
236 'separator' => 'after',
237 ]
238 );
239
240 /* conf_results_type :: results_listings */
241 if(true){
242 $this->add_control(
243 'conf_results_type_results_listings_header',
244 [
245 'label' => esc_html__('Results listings', 'wpdirectorykit'),
246 'type' => Controls_Manager::HEADING,
247 'separator' => 'before',
248 'conditions' => [
249 'terms' => [
250 [
251 'name' => 'conf_results_type',
252 'operator' => '==',
253 'value' => 'results_listings',
254 ]
255 ],
256 ],
257 ]
258 );
259
260
261 $this->add_control(
262 'get_filters_enable',
263 [
264 'label' => __( 'Filtering based on URL enable', 'wpdirectorykit' ),
265 'type' => \Elementor\Controls_Manager::SWITCHER,
266 'label_on' => __( 'True', 'wpdirectorykit' ),
267 'label_off' => __( 'False', 'wpdirectorykit' ),
268 'return_value' => 'yes',
269 'default' => '',
270 'conditions' => [
271 'terms' => [
272 [
273 'name' => 'conf_results_type',
274 'operator' => '==',
275 'value' => 'results_listings',
276 ]
277 ],
278 ],
279 ]
280 );
281
282 $this->add_control(
283 'conf_limit',
284 [
285 'label' => __( 'Limit Results', 'wpdirectorykit' ),
286 'type' => \Elementor\Controls_Manager::NUMBER,
287 'min' => 1,
288 'max' => 250,
289 'step' => 1,
290 'default' => 6,
291 'conditions' => [
292 'terms' => [
293 [
294 'name' => 'conf_results_type',
295 'operator' => '==',
296 'value' => 'results_listings',
297 ]
298 ],
299 ],
300 ]
301 );
302
303 $this->add_control(
304 'only_is_featured',
305 [
306 'label' => __( 'Only show featured', 'wpdirectorykit' ),
307 'type' => \Elementor\Controls_Manager::SWITCHER,
308 'label_on' => __( 'True', 'wpdirectorykit' ),
309 'label_off' => __( 'False', 'wpdirectorykit' ),
310 'return_value' => 'yes',
311 'default' => '',
312 ]
313 );
314
315 $this->add_control(
316 'conf_query',
317 [
318 'label' => __( 'Query', 'wpdirectorykit' ),
319 'type' => \Elementor\Controls_Manager::TEXTAREA,
320 'rows' => 5,
321 'default' => '',
322 'placeholder' => __( 'Type your query here, example xxx', 'wpdirectorykit' ),
323 'description' => '<span style="word-break: break-all;">'.__( 'Example (same like on url):', 'wpdirectorykit' ).
324 ' field_6_min=100&field_6_max=200&field_5=rent&is_featured=on&search_category=3&search_location=4&search_agents_ids=3'.
325 '</span>',
326 'conditions' => [
327 'terms' => [
328 [
329 'name' => 'conf_results_type',
330 'operator' => '==',
331 'value' => 'results_listings',
332 ]
333 ],
334 ],
335 ]
336 );
337
338 $this->add_control(
339 'conf_order_by',
340 [
341 'label' => __('Default Sort By Column', 'wpdirectorykit'),
342 'type' => Controls_Manager::SELECT,
343 'label_block' => true,
344 'options' => [
345 'none' => __('None', 'wpdirectorykit'),
346 'post_id' => __('ID', 'wpdirectorykit'),
347 'post_title' => __('Title', 'wpdirectorykit'),
348 ],
349 'default' => 'post_id',
350 'conditions' => [
351 'terms' => [
352 [
353 'name' => 'conf_results_type',
354 'operator' => '==',
355 'value' => 'results_listings',
356 ]
357 ],
358 ],
359 ]
360 );
361
362 $this->add_control(
363 'conf_order_by_custom',
364 [
365 'label' => __('Default Custom Sort By (Column)', 'wpdirectorykit'),
366 'description' => '<span style="word-break: break-all;">'.__( 'Example:', 'wpdirectorykit' ).
367 '<br> field_13_NUMBER - where 13 is field id, NUMBER - field type'.
368 '<br> field_4_NUMBER - where 4 is field id, NUMBER - field type'.
369 '<br> field_6_DROPDOWN - where 6 is field id, DROPDOWN - field type'.
370 '<br> category_title - Category Title'.
371 '<br> location_title - Location Title'.
372 '</span>',
373 'type' => Controls_Manager::TEXT,
374 'label_block' => true,
375 'default' => 'post_id',
376 'conditions' => [
377 'terms' => [
378 [
379 'name' => 'conf_results_type',
380 'operator' => '==',
381 'value' => 'results_listings',
382 ]
383 ],
384 ],
385 ]
386 );
387
388 $this->add_control(
389 'conf_order',
390 [
391 'label' => __('Default Post Order', 'wpdirectorykit'),
392 'type' => Controls_Manager::SELECT,
393 'label_block' => true,
394 'options' => [
395 'asc' => __('Ascending', 'wpdirectorykit'),
396 'desc' => __('Descending', 'wpdirectorykit')
397 ],
398 'default' => 'desc',
399 'conditions' => [
400 'terms' => [
401 [
402 'name' => 'conf_results_type',
403 'operator' => '==',
404 'value' => 'results_listings',
405 ]
406 ],
407 ],
408 ]
409 );
410
411
412 }
413
414 if(true) {
415 $this->add_control(
416 'conf_results_type_custom_listings_header',
417 [
418 'label' => esc_html__('Custom listings', 'wpdirectorykit'),
419 'type' => Controls_Manager::HEADING,
420 'separator' => 'before',
421 'conditions' => [
422 'terms' => [
423 [
424 'name' => 'conf_results_type',
425 'operator' => '==',
426 'value' => 'custom_listings',
427 ]
428 ],
429 ],
430 ]
431 );
432
433
434 if(true){
435 $repeater = new Repeater();
436 $repeater->start_controls_tabs( 'listings' );
437 $repeater->add_control(
438 'listing_post_id',
439 [
440 'label' => __( 'ID Post Listing', 'wpdirectorykit' ),
441 'type' => \Elementor\Controls_Manager::NUMBER,
442 'min' => 1,
443 'step' => 1,
444 ]
445 );
446 $repeater->end_controls_tabs();
447
448
449 $this->add_control(
450 'conf_custom_results',
451 [
452 'type' => Controls_Manager::REPEATER,
453 'fields' => $repeater->get_controls(),
454 'default' => [
455 ],
456 'title_field' => '{{{ listing_post_id }}}',
457 'conditions' => [
458 'terms' => [
459 [
460 'name' => 'conf_results_type',
461 'operator' => '==',
462 'value' => 'custom_listings',
463 ]
464 ],
465 ],
466 ]
467 );
468
469 }
470 }
471
472 $this->end_controls_section();
473
474 }
475
476 private function generate_controls_layout() {
477 $this->start_controls_section(
478 'tab_content',
479 [
480 'label' => esc_html__('Basic', 'wpdirectorykit'),
481 'tab' => 'tab_layout',
482 ]
483 );
484
485 /* Carousel Grid Config */
486 if(true) {
487 $this->add_responsive_control(
488 'carousel_column_gap_carousel',
489 [
490 'label' => esc_html__('Slider Gap', 'wpdirectorykit'),
491 'type' => Controls_Manager::SLIDER,
492 'range' => [
493 'px' => [
494 'min' => 0,
495 'max' => 60,
496 ],
497 ],
498 'selectors' => [
499 '{{WRAPPER}} .slick-slider.wdk_results_listings_slider_ini ' => 'padding-left: {{SIZE}}{{UNIT}};padding-right: {{SIZE}}{{UNIT}};',
500 ],
501 ]
502 );
503
504 $this->add_responsive_control (
505 'carousel_column_gap',
506 [
507 'label' => esc_html__('Columns Gap', 'wpdirectorykit'),
508 'type' => Controls_Manager::SLIDER,
509 'default' => [
510 'size' => 10,
511 ],
512 'range' => [
513 'px' => [
514 'min' => 0,
515 'max' => 60,
516 ],
517 ],
518 'selectors' => [
519 '{{WRAPPER}} .slick-slider.wdk_results_listings_slider_ini .wdk-col' => 'padding-left: {{SIZE}}{{UNIT}};padding-right: {{SIZE}}{{UNIT}};',
520 '{{WRAPPER}} .slick-slider.wdk_results_listings_slider_ini' => 'margin-left: -{{SIZE}}{{UNIT}};margin-right: -{{SIZE}}{{UNIT}};',
521 ],
522 ]
523 );
524
525 $this->add_responsive_control(
526 'carousel_column_gap_top',
527 [
528 'label' => esc_html__('Columns Gap Top', 'wpdirectorykit'),
529 'type' => Controls_Manager::SLIDER,
530 'default' => [
531 'size' => 0,
532 ],
533 'range' => [
534 'px' => [
535 'min' => 0,
536 'max' => 60,
537 ],
538 ],
539 'selectors' => [
540 '{{WRAPPER}} .wdk_results_listings_slider_box' => 'padding-top: {{SIZE}}{{UNIT}};',
541 ],
542 ]
543 );
544
545 $this->add_responsive_control(
546 'carousel_column_gap_bottom',
547 [
548 'label' => esc_html__('Columns Gap Bottom', 'wpdirectorykit'),
549 'type' => Controls_Manager::SLIDER,
550 'default' => [
551 'size' => 10,
552 ],
553 'range' => [
554 'px' => [
555 'min' => 0,
556 'max' => 60,
557 ],
558 ],
559 'selectors' => [
560 '{{WRAPPER}} .wdk_results_listings_slider_box' => 'padding-bottom: {{SIZE}}{{UNIT}};',
561 ],
562 ]
563 );
564 }
565
566
567 $this->add_control(
568 'basic_el_header_1',
569 [
570 'label' => esc_html__('Text', 'wpdirectorykit'),
571 'type' => Controls_Manager::HEADING,
572 'separator' => 'before',
573 ]
574 );
575
576 $this->add_control(
577 'content_button_text',
578 [
579 'label' => __( 'Button Open Text', 'wpdirectorykit' ),
580 'type' => \Elementor\Controls_Manager::TEXT,
581 'default' => '',
582 ]
583 );
584
585 $this->end_controls_section();
586
587 $this->start_controls_section(
588 'layout_carousel_sec',
589 [
590 'label' => esc_html__('Carousel Options', 'wpdirectorykit'),
591 'tab' => 'tab_layout',
592 ]
593 );
594
595 $this->add_control(
596 'layout_carousel_is_infinite',
597 [
598 'label' => __( 'Infinite', 'wpdirectorykit' ),
599 'type' => \Elementor\Controls_Manager::SWITCHER,
600 'label_on' => __( 'On', 'wpdirectorykit' ),
601 'label_off' => __( 'Off', 'wpdirectorykit' ),
602 'return_value' => 'true',
603 'default' => 'true',
604 ]
605 );
606
607 $this->add_control(
608 'layout_carousel_is_autoplay',
609 [
610 'label' => __( 'Autoplay', 'wpdirectorykit' ),
611 'type' => \Elementor\Controls_Manager::SWITCHER,
612 'label_on' => __( 'On', 'wpdirectorykit' ),
613 'label_off' => __( 'Off', 'wpdirectorykit' ),
614 'return_value' => 'true',
615 'default' => '',
616 ]
617 );
618
619 $this->add_control(
620 'layout_carousel_speed',
621 [
622 'label' => __( 'Speed', 'wpdirectorykit' ),
623 'type' => \Elementor\Controls_Manager::NUMBER,
624 'min' => 0,
625 'max' => 100000,
626 'step' => 100,
627 'default' => 500,
628 ]
629 );
630
631 $this->add_control(
632 'layout_carousel_animation_style',
633 [
634 'label' => __( 'Animation Style', 'wpdirectorykit' ),
635 'type' => \Elementor\Controls_Manager::SELECT,
636 'default' => 'fade',
637 'options' => [
638 'slide' => __( 'Slide', 'wpdirectorykit' ),
639 'fade' => __( 'Fade', 'wpdirectorykit' ),
640 'fade_in_in' => __( 'Fade in', 'wpdirectorykit' ),
641 ],
642 ]
643 );
644
645 $this->add_control(
646 'layout_carousel_cssease',
647 [
648 'label' => __( 'cssEase', 'wpdirectorykit' ),
649 'type' => \Elementor\Controls_Manager::SELECT,
650 'default' => 'linear',
651 'options' => [
652 'linear' => __( 'linear', 'wpdirectorykit' ),
653 'ease' => __( 'ease', 'wpdirectorykit' ),
654 'ease-in' => __( 'ease-in', 'wpdirectorykit' ),
655 'ease-out' => __( 'ease-out', 'wpdirectorykit' ),
656 'ease-in-out' => __( 'ease-in-out', 'wpdirectorykit' ),
657 'step-start' => __( 'step-start', 'wpdirectorykit' ),
658 'step-end' => __( 'step-end', 'wpdirectorykit' ),
659 ],
660 ]
661 );
662
663 $this->add_responsive_control(
664 'layout_carousel_columns',
665 [
666 'label' => __( 'Count grid', 'wpdirectorykit' ),
667 'type' => \Elementor\Controls_Manager::NUMBER,
668 'min' => 1,
669 'max' => 10,
670 'step' => 1,
671 'default' => 3,
672 ]
673 );
674
675 $this->end_controls_section();
676
677 }
678
679 private function generate_controls_styles() {
680 $this->start_controls_section(
681 'sstyles_thmbn_section',
682 [
683 'label' => esc_html__('Section Image', 'wpdirectorykit'),
684 'tab' => Controls_Manager::TAB_STYLE,
685 ]
686 );
687
688 $this->add_group_control(
689 Group_Control_Image_Size::get_type(),
690 [
691 'name' => 'thumbnail_image', // Usage: `{name}_size` and `{name}_custom_dimension`, in this case `thumbnail_size` and `thumbnail_custom_dimension`.
692 'default' => 'full',
693 'separator' => 'none',
694 ]
695 );
696
697 $this->add_responsive_control(
698 'styles_thmbn_des_type',
699 [
700 'label' => __( 'Design type', 'wpdirectorykit' ),
701 'type' => \Elementor\Controls_Manager::SELECT,
702 'default' => 'wdk_size_image_cover',
703 'options' => [
704 'wdk_size_image_ori' => __( 'Default Sizes', 'wpdirectorykit' ),
705 'wdk_size_image_cover' => __( 'Image auto crop/resize', 'wpdirectorykit' ),
706 ],
707 ]
708 );
709
710 $this->add_responsive_control(
711 'styles_thmbn_des_height',
712 [
713 'label' => esc_html__('Height', 'wpdirectorykit'),
714 'type' => Controls_Manager::SLIDER,
715 'range' => [
716 'px' => [
717 'min' => 300,
718 'max' => 1500,
719 ],
720 'vw' => [
721 'min' => 0,
722 'max' => 100,
723 ],
724 ],
725 'size_units' => [ 'px','em', 'vw', '%', 'custom' ],
726 'default' => [
727 'size' => 350,
728 'unit' => 'px',
729 ],
730 'selectors' => [
731 '{{WRAPPER}} .wdk-listings-results.wdk_size_image_cover .wdk-listing-card .wdk-thumbnail .wdk-image' => 'height: {{SIZE}}{{UNIT}}',
732 ],
733 'separator' => 'after',
734 'conditions' => [
735 'relation' => 'or',
736 'terms' => [
737 [
738 'name' => 'styles_thmbn_des_type',
739 'operator' => '==',
740 'value' => 'wdk_size_image_cover',
741 ],
742 [
743 'name' => 'styles_thmbn_des_type',
744 'operator' => '==',
745 'value' => 'wdk_image_cover',
746 ]
747 ],
748 ]
749 ]
750 );
751 $this->end_controls_section();
752
753 $this->start_controls_section(
754 'styles_carousel_arrows_section',
755 [
756 'label' => esc_html__('Carousel Arrows', 'wpdirectorykit'),
757 'tab' => Controls_Manager::TAB_STYLE,
758 ]
759 );
760
761 $this->add_responsive_control(
762 'styles_carousel_arrows_hide',
763 [
764 'label' => esc_html__( 'Hide Element', 'wpdirectorykit' ),
765 'type' => Controls_Manager::SWITCHER,
766 'none' => esc_html__( 'Hide', 'wpdirectorykit' ),
767 'block' => esc_html__( 'Show', 'wpdirectorykit' ),
768 'return_value' => 'none',
769 'default' => '',
770 'selectors' => [
771 '{{WRAPPER}} .wdk_results_listings_slider_box .wdk_slider_arrows' => 'display: {{VALUE}};',
772 ],
773 ]
774 );
775
776 $this->add_responsive_control(
777 'styles_carousel_arrows_position',
778 [
779 'label' => __( 'Position', 'wpdirectorykit' ),
780 'type' => \Elementor\Controls_Manager::SELECT,
781 'default' => 'wdk_slider_arrows_bottom',
782 'options' => [
783 'wdk_slider_arrows_bottom' => __( 'Bottom', 'wpdirectorykit' ),
784 'wdk_slider_arrows_middle' => __( 'Center', 'wpdirectorykit' ),
785 'wdk_slider_arrows_top' => __( 'Top', 'wpdirectorykit' ),
786 ],
787 ]
788 );
789
790 $this->add_responsive_control(
791 'styles_carousel_arrows_align',
792 [
793 'label' => __( 'Align', 'wpdirectorykit' ),
794 'type' => Controls_Manager::CHOOSE,
795 'options' => [
796 'left' => [
797 'title' => esc_html__( 'Left', 'wpdirectorykit' ),
798 'icon' => 'eicon-text-align-left',
799 ],
800 'center' => [
801 'title' => esc_html__( 'Center', 'wpdirectorykit' ),
802 'icon' => 'eicon-text-align-center',
803 ],
804 'right' => [
805 'title' => esc_html__( 'Right', 'wpdirectorykit' ),
806 'icon' => 'eicon-text-align-right',
807 ],
808 'justify' => [
809 'title' => esc_html__( 'Justified', 'wpdirectorykit' ),
810 'icon' => 'eicon-text-align-justify',
811 ],
812 ],
813 'render_type' => 'ui',
814 'selectors_dictionary' => [
815 'left' => 'justify-content: flex-start;',
816 'center' => 'justify-content: center;',
817 'right' => 'justify-content: flex-end;',
818 'justify' => 'justify-content: space-between;',
819 ],
820 'selectors' => [
821 '{{WRAPPER}} .wdk_results_listings_slider_box .wdk_slider_arrows' => '{{VALUE}};',
822 ],
823 'conditions' => [
824 'relation' => 'or',
825 'terms' => [
826 [
827 'name' => 'styles_thmbn_des_type',
828 'operator' => '==',
829 'value' => 'wdk_size_image_cover',
830 ],
831 [
832 'name' => 'styles_thmbn_des_type',
833 'operator' => '==',
834 'value' => 'wdk_image_cover',
835 ]
836 ],
837 ],
838 ]
839 );
840
841 $this->add_responsive_control(
842 'styles_carousel_arrows_icon_left_h',
843 [
844 'label' => esc_html__('Arrow left', 'wpdirectorykit'),
845 'type' => Controls_Manager::HEADING,
846 'separator' => 'before',
847 ]
848 );
849 $this->add_responsive_control(
850 'styles_carousel_arrows_s_m_left_margin',
851 [
852 'label' => esc_html__( 'Margin', 'wpdirectorykit' ),
853 'type' => Controls_Manager::DIMENSIONS,
854 'size_units' => [ 'px', 'em', '%' ],
855 'allowed_dimensions' => 'horizontal',
856 'selectors' => [
857 '{{WRAPPER}} .wdk_results_listings_slider_box .wdk_slider_arrows .wdk_lr_slider_arrow.wdk-slider-prev' => 'margin-right:{{RIGHT}}{{UNIT}}; margin-left:{{LEFT}}{{UNIT}};',
858 ],
859 ]
860 );
861
862 $this->add_responsive_control(
863 'styles_carousel_arrows_icon_left',
864 [
865 'label' => esc_html__('Icon', 'wpdirectorykit'),
866 'type' => Controls_Manager::ICONS,
867 'label_block' => true,
868 'default' => [
869 'value' => 'fa fa-angle-left',
870 'library' => 'solid',
871 ],
872 ]
873 );
874
875 $this->add_responsive_control(
876 'styles_carousel_arrows_icon_right_h',
877 [
878 'label' => esc_html__('Arrow right', 'wpdirectorykit'),
879 'type' => Controls_Manager::HEADING,
880 'separator' => 'before',
881 ]
882 );
883
884 $this->add_responsive_control(
885 'styles_carousel_arrows_s_m_right_margin',
886 [
887 'label' => esc_html__( 'Margin', 'wpdirectorykit' ),
888 'type' => Controls_Manager::DIMENSIONS,
889 'size_units' => [ 'px', 'em', '%' ],
890 'allowed_dimensions' => 'horizontal',
891 'selectors' => [
892 '{{WRAPPER}} .wdk_results_listings_slider_box .wdk_slider_arrows .wdk_lr_slider_arrow.wdk-slider-next' => 'margin-right:{{RIGHT}}{{UNIT}}; margin-left:{{LEFT}}{{UNIT}};',
893 ],
894 ]
895 );
896
897 $this->add_responsive_control(
898 'styles_carousel_arrows_icon_right',
899 [
900 'label' => esc_html__('Icon', 'wpdirectorykit'),
901 'type' => Controls_Manager::ICONS,
902 'label_block' => true,
903 'default' => [
904 'value' => 'fa fa-angle-right',
905 'library' => 'solid',
906 ],
907 ]
908 );
909
910 $selectors = array(
911 'normal' => '{{WRAPPER}} .wdk_results_listings_slider_box .wdk_slider_arrows .wdk_lr_slider_arrow',
912 'hover'=>'{{WRAPPER}} .wdk_results_listings_slider_box .wdk_slider_arrows .wdk_lr_slider_arrow%1$s'
913 );
914 $this->generate_renders_tabs($selectors, 'styles_carousel_arrows_dynamic', ['margin','color','background','border','border_radius','padding','shadow','transition','font-size','hover_animation']);
915
916 $this->end_controls_section();
917
918 $this->start_controls_section(
919 'styles_carousel_dots_section',
920 [
921 'label' => esc_html__('Section Dots', 'wpdirectorykit'),
922 'tab' => Controls_Manager::TAB_STYLE,
923 ]
924 );
925
926 $this->add_responsive_control(
927 'styles_carousel_dots_hide',
928 [
929 'label' => esc_html__( 'Hide Element', 'wpdirectorykit' ),
930 'type' => Controls_Manager::SWITCHER,
931 'none' => esc_html__( 'Hide', 'wpdirectorykit' ),
932 'block' => esc_html__( 'Show', 'wpdirectorykit' ),
933 'return_value' => 'none',
934 'default' => '',
935 'selectors' => [
936 '{{WRAPPER}} .wdk_results_listings_slider_box .slick-dots' => 'display: {{VALUE}} !important;',
937 ],
938 ]
939 );
940
941 $this->add_responsive_control(
942 'styles_carousel_dots_position_style',
943 [
944 'label' => __( 'Position Style', 'wpdirectorykit' ),
945 'type' => \Elementor\Controls_Manager::SELECT,
946 'default' => 'wdk_slider_dots_out',
947 'options' => [
948 'wdk_slider_dots_out' => __( 'Out', 'wpdirectorykit' ),
949 'wdk_slider_dots_in' => __( 'In', 'wpdirectorykit' ),
950 ],
951 ]
952 );
953
954 $this->add_responsive_control(
955 'styles_carousel_dots_align',
956 [
957 'label' => __( 'Position', 'wpdirectorykit' ),
958 'type' => Controls_Manager::CHOOSE,
959 'options' => [
960 'left' => [
961 'title' => esc_html__( 'Left', 'wpdirectorykit' ),
962 'icon' => 'eicon-text-align-left',
963 ],
964 'center' => [
965 'title' => esc_html__( 'Center', 'wpdirectorykit' ),
966 'icon' => 'eicon-text-align-center',
967 ],
968 'right' => [
969 'title' => esc_html__( 'Right', 'wpdirectorykit' ),
970 'icon' => 'eicon-text-align-right',
971 ],
972 'justify' => [
973 'title' => esc_html__( 'Justified', 'wpdirectorykit' ),
974 'icon' => 'eicon-text-align-justify',
975 ],
976 ],
977 'render_type' => 'ui',
978 'selectors_dictionary' => [
979 'left' => 'justify-content: flex-start;',
980 'center' => 'justify-content: center;',
981 'right' => 'justify-content: flex-end;',
982 'justify' => 'justify-content: space-between;',
983 ],
984 'selectors' => [
985 '{{WRAPPER}} .wdk_results_listings_slider_box .slick-dots' => '{{VALUE}};',
986 ],
987 ]
988 );
989
990 $this->add_responsive_control(
991 'styles_carousel_dots_icon',
992 [
993 'label' => esc_html__('Icon', 'wpdirectorykit'),
994 'type' => Controls_Manager::ICONS,
995 'label_block' => true,
996 'default' => [
997 'value' => 'fas fa-circle',
998 'library' => 'solid',
999 ],
1000 ]
1001 );
1002
1003 $selectors = array(
1004 'normal' => '{{WRAPPER}} .wdk_results_listings_slider_box .slick-dots li .wdk_lr_dot',
1005 'hover'=>'{{WRAPPER}} .wdk_results_listings_slider_box .slick-dots li .wdk_lr_dot%1$s',
1006 'active'=>'{{WRAPPER}} .wdk_results_listings_slider_box .slick-dots li.slick-active .wdk_lr_dot'
1007 );
1008
1009 $this->generate_renders_tabs($selectors, 'styles_carousel_dots_dynamic', ['margin','color','background','border','border_radius','padding','shadow','transition','font-size','hover_animation']);
1010 $this->end_controls_section();
1011 }
1012
1013 private function generate_controls_content() {
1014 $this->start_controls_section(
1015 'content_thumbnail_section',
1016 [
1017 'label' => esc_html__('Colors', 'wpdirectorykit'),
1018 'tab' => '1',
1019 ]
1020 );
1021
1022 $this->add_control(
1023 'content_thumbnail_section_header',
1024 [
1025 'label' => esc_html__('Color Hover Thumbnail', 'wpdirectorykit'),
1026 'type' => Controls_Manager::HEADING,
1027 ]
1028 );
1029
1030 $this->add_responsive_control(
1031 'content_thumbnail_section_d_background',
1032 [
1033 'label' => esc_html__( 'Color', 'wpdirectorykit' ),
1034 'description' => esc_html__( 'Set some opacity for color', 'wpdirectorykit' ),
1035 'type' => Controls_Manager::COLOR,
1036 'selectors' => [
1037 '{{WRAPPER}} .wdk-listing-card .wdk-thumbnail::before, {{WRAPPER}} .wdk-listing-card .wdk-thumbnail::after,{{WRAPPER}} .wdk-listing-card .overlay' => 'background-color: {{VALUE}};',
1038 ],
1039 ]
1040 );
1041
1042 $this->add_control(
1043 'content_thumbnail_section_header_f',
1044 [
1045 'label' => esc_html__('Shadow around Card, for Featured Listings', 'wpdirectorykit'),
1046 'type' => Controls_Manager::HEADING,
1047 ]
1048 );
1049
1050 $this->add_group_control(
1051 Group_Control_Box_Shadow::get_type(),
1052 [
1053 'name' => 'content_thumbnail_section_d_featured',
1054 'exclude' => [
1055 'field_shadow_position',
1056 ],
1057 'selector' => '{{WRAPPER}} .wdk-listing-card.is_featured',
1058 ]
1059 );
1060
1061 $this->end_controls_section();
1062
1063
1064 $items = [
1065 [
1066 'key'=>'content_card',
1067 'label'=> esc_html__('Card', 'wpdirectorykit'),
1068 'selector'=>'.wdk-element .wdk-listing-card',
1069 'options'=>'full',
1070 ],
1071 [
1072 'key'=>'content_label',
1073 'label'=> esc_html__('Over Image Top', 'wpdirectorykit'),
1074 'selector'=>'.wdk-element .wdk-listing-card .wdk-thumbnail .wdk-over-image-top span',
1075 'options'=>'full',
1076 ],
1077 [
1078 'key'=>'content_type',
1079 'label'=> esc_html__('Over Image Bottom', 'wpdirectorykit'),
1080 'selector'=>'.wdk-element .wdk-listing-card .wdk-thumbnail .wdk-over-image-bottom',
1081 'is_featured'=>'.wdk-element .wdk-listing-card.is_featured .wdk-thumbnail .wdk-over-image-bottom',
1082 'options'=>'full',
1083 ],
1084 [
1085 'key'=>'content_title',
1086 'label'=> esc_html__('Title Part', 'wpdirectorykit'),
1087 'selector'=>'.wdk-element .wdk-listing-card .wdk-title .title',
1088 'options'=>'full',
1089 ],
1090 [
1091 'key'=>'content_description',
1092 'label'=> esc_html__('Subtitle part', 'wpdirectorykit'),
1093 'selector'=>'.wdk-element .wdk-listing-card .wdk-subtitle-part',
1094 'options'=>'full',
1095 ],
1096 [
1097 'key'=>'content_items',
1098 'label'=> esc_html__('Features part', 'wpdirectorykit'),
1099 'selector'=>'.wdk-element .wdk-listing-card .wdk-features-part span',
1100 'options'=>'full',
1101 ],
1102 [
1103 'key'=>'wdk-divider',
1104 'label'=> esc_html__('Divider', 'wpdirectorykit'),
1105 'selector'=>'.wdk-element .wdk-listing-card .wdk-divider',
1106 'options'=>'full',
1107 ],
1108 [
1109 'key'=>'content_price',
1110 'label'=> esc_html__('Pricing part', 'wpdirectorykit'),
1111 'selector'=>'.wdk-element .wdk-listing-card .wdk-footer .wdk-price',
1112 'options'=>'full',
1113 ],
1114 [
1115 'key'=>'content_button',
1116 'label'=> esc_html__('Button Open', 'wpdirectorykit'),
1117 'selector'=>'.wdk-element .wdk-listing-card .wdk-footer .wdk-btn',
1118 'options'=>'full',
1119 ],
1120 ];
1121
1122 foreach ($items as $item) {
1123 $this->start_controls_section(
1124 $item['key'].'_section',
1125 [
1126 'label' => $item['label'],
1127 'tab' => '1',
1128 ]
1129 );
1130 $this->add_responsive_control(
1131 $item['key'].'_hide',
1132 [
1133 'label' => esc_html__( 'Hide Element', 'wpdirectorykit' ),
1134 'type' => Controls_Manager::SWITCHER,
1135 'none' => esc_html__( 'Hide', 'wpdirectorykit' ),
1136 'block' => esc_html__( 'Show', 'wpdirectorykit' ),
1137 'return_value' => 'none',
1138 'default' => '',
1139 'selectors' => [
1140 '{{WRAPPER}} '.$item['selector'] => 'display: {{VALUE}};',
1141 ],
1142 ]
1143 );
1144
1145
1146 $this->add_responsive_control(
1147 $item['key'].'_min-height',
1148 [
1149 'label' => esc_html__('Min Height', 'wpdirectorykit'),
1150 'type' => Controls_Manager::SLIDER,
1151 'range' => [
1152 'px' => [
1153 'min' => 10,
1154 'max' => 1500,
1155 ],
1156 'vw' => [
1157 'min' => 0,
1158 'max' => 100,
1159 ],
1160 '%' => [
1161 'min' => 0,
1162 'max' => 100,
1163 ],
1164 ],
1165 'size_units' => [ 'px', 'vw','%' ],
1166 'selectors' => [
1167 '{{WRAPPER}} '.$item['selector'] => 'min-height: {{SIZE}}{{UNIT}}',
1168 ],
1169
1170 ]
1171 );
1172 /* special for some elements */
1173 if ($item['key'] == 'content_description') {
1174
1175 $this->add_control(
1176 'content_description_limit',
1177 [
1178 'label' => __( 'Limit Line (per field)', 'wpdirectorykit' ),
1179 'type' => \Elementor\Controls_Manager::NUMBER,
1180 'min' => 1,
1181 'max' => 10,
1182 'step' => 1,
1183 'default' => 3,
1184 'selectors' => [
1185 '{{WRAPPER}} .wdk-listing-card .wdk-subtitle-part span' => '-webkit-line-clamp: {{VALUE}};',
1186 ],
1187 ]
1188 );
1189 }
1190 if ($item['key'] == 'content_title') {
1191
1192 $this->add_control(
1193 'content_title_limit',
1194 [
1195 'label' => __( 'Limit Line (per field)', 'wpdirectorykit' ),
1196 'type' => \Elementor\Controls_Manager::NUMBER,
1197 'min' => 1,
1198 'max' => 10,
1199 'step' => 1,
1200 'default' => 3,
1201 'selectors' => [
1202 '{{WRAPPER}} .wdk-listing-card .wdk-title span' => '-webkit-line-clamp: {{VALUE}};',
1203 ],
1204 ]
1205 );
1206 }
1207
1208 $selectors = array(
1209 'normal' => '{{WRAPPER}} '.$item['selector'],
1210 'hover'=>'{{WRAPPER}} '.$item['selector'].'%1$s'
1211 );
1212
1213 if(isset($item['is_featured'])) {
1214 $selectors['featured'] = '{{WRAPPER}} '.$item['is_featured'];
1215 }
1216 $this->generate_renders_tabs($selectors, $item['key'].'_dynamic', $item['options']);
1217
1218
1219
1220 if($item['key'] == 'content_button') {
1221 $this->add_control(
1222 $item['key'].'_icon',
1223 [
1224 'label' => esc_html__('Icon', 'wpdirectorykit'),
1225 'type' => Controls_Manager::ICONS,
1226 'label_block' => true,
1227 'default' => [
1228 'value' => 'fa fa-angle-right',
1229 'library' => 'solid',
1230 ],
1231 ]
1232 );
1233
1234 $selectors = array(
1235 'normal' => '{{WRAPPER}} '.$item['selector'].' i',
1236 );
1237 $this->generate_renders_tabs($selectors, $item['key'].'_icon_dynamic', ['margin']);
1238 }
1239
1240 if($item['key'] == 'content_items') {
1241 $this->add_control(
1242 $item['key'].'_parent_head',
1243 [
1244 'label' => esc_html__('Parent Box', 'wpdirectorykit'),
1245 'type' => Controls_Manager::HEADING,
1246 'separator' => 'before',
1247 ]
1248 );
1249
1250 $selectors = array(
1251 'normal' => '{{WRAPPER}} .wdk-element .wdk-listing-card .wdk-features-part',
1252 );
1253 $this->generate_renders_tabs($selectors, $item['key'].'_parent_dynamic', ['margin']);
1254 }
1255
1256 if($item['key'] == 'content_label') {
1257 $this->add_control(
1258 $item['key'].'_parent_head',
1259 [
1260 'label' => esc_html__('Parent Box', 'wpdirectorykit'),
1261 'type' => Controls_Manager::HEADING,
1262 'separator' => 'before',
1263 ]
1264 );
1265
1266 $selectors = array(
1267 'normal' => '{{WRAPPER}} .wdk-element .wdk-listing-card .wdk-over-image-top',
1268 );
1269 $this->generate_renders_tabs($selectors, $item['key'].'_parent_dynamic', ['margin','align']);
1270 }
1271
1272
1273 if($item['key'] == 'content_label') {
1274 $this->add_responsive_control(
1275 $item['key'] .'content_label_positions_y',
1276 [
1277 'label' => __( 'Position Y', 'wpdirectorykit' ),
1278 'type' => Controls_Manager::CHOOSE,
1279 'options' => [
1280 'top' => [
1281 'title' => esc_html__( 'Top', 'wpdirectorykit' ),
1282 'icon' => 'eicon-text-align-top',
1283 ],
1284 'center' => [
1285 'title' => esc_html__( 'Center', 'wpdirectorykit' ),
1286 'icon' => 'eicon-text-align-center',
1287 ],
1288 'bottom' => [
1289 'title' => esc_html__( 'Bottom', 'wpdirectorykit' ),
1290 'icon' => 'eicon-text-align-bottom',
1291 ],
1292 ],
1293 'default' => 'left',
1294 'render_type' => 'ui',
1295 'selectors_dictionary' => [
1296 'top' => 'top:0;bottom:initial',
1297 'center' => 'top:50%;transform: translateY(-50%)',
1298 'bottom' => 'top:initial;bottom:0',
1299 ],
1300 'selectors' => [
1301 '{{WRAPPER}} .wdk-listing-card .wdk-thumbnail .wdk-over-image-top' => '{{VALUE}};',
1302 ],
1303 ]
1304 );
1305
1306 $this->add_responsive_control(
1307 $item['key'] .'content_label_positions_x',
1308 [
1309 'label' => __( 'Position X', 'wpdirectorykit' ),
1310 'type' => Controls_Manager::CHOOSE,
1311 'options' => [
1312 'left' => [
1313 'title' => esc_html__( 'Left', 'wpdirectorykit' ),
1314 'icon' => 'eicon-text-align-left',
1315 ],
1316 'center' => [
1317 'title' => esc_html__( 'Center', 'wpdirectorykit' ),
1318 'icon' => 'eicon-text-align-center',
1319 ],
1320 'right' => [
1321 'title' => esc_html__( 'Right', 'wpdirectorykit' ),
1322 'icon' => 'eicon-text-align-right',
1323 ],
1324 ],
1325 'default' => 'left',
1326 'render_type' => 'ui',
1327 'selectors_dictionary' => [
1328 'left' => 'left:0',
1329 'center' => 'left:50%;transform: translateX(-50%)',
1330 'right' => 'left:initial; right:0',
1331 ],
1332 'selectors' => [
1333 '{{WRAPPER}} .wdk-listing-card .wdk-thumbnail .wdk-over-image-top' => '{{VALUE}};',
1334 ],
1335 ]
1336 );
1337 }
1338
1339 if($item['key'] == 'content_type') {
1340 $this->add_responsive_control(
1341 $item['key'] .'content_label_positions_y',
1342 [
1343 'label' => __( 'Position Y', 'wpdirectorykit' ),
1344 'type' => Controls_Manager::CHOOSE,
1345 'options' => [
1346 'top' => [
1347 'title' => esc_html__( 'Top', 'wpdirectorykit' ),
1348 'icon' => 'eicon-text-align-top',
1349 ],
1350 'center' => [
1351 'title' => esc_html__( 'Center', 'wpdirectorykit' ),
1352 'icon' => 'eicon-text-align-center',
1353 ],
1354 'bottom' => [
1355 'title' => esc_html__( 'Bottom', 'wpdirectorykit' ),
1356 'icon' => 'eicon-text-align-bottom',
1357 ],
1358 ],
1359 'default' => 'left',
1360 'render_type' => 'ui',
1361 'selectors_dictionary' => [
1362 'top' => 'top:0;bottom:initial',
1363 'center' => 'top:50%;transform: translateY(-50%)',
1364 'bottom' => 'top:initial;bottom:0',
1365 ],
1366 'selectors' => [
1367 '{{WRAPPER}} '.$item['selector'] => '{{VALUE}};',
1368 ],
1369 ]
1370 );
1371
1372 $this->add_responsive_control(
1373 $item['key'] .'content_label_positions_x',
1374 [
1375 'label' => __( 'Position X', 'wpdirectorykit' ),
1376 'type' => Controls_Manager::CHOOSE,
1377 'options' => [
1378 'left' => [
1379 'title' => esc_html__( 'Left', 'wpdirectorykit' ),
1380 'icon' => 'eicon-text-align-left',
1381 ],
1382 'center' => [
1383 'title' => esc_html__( 'Center', 'wpdirectorykit' ),
1384 'icon' => 'eicon-text-align-center',
1385 ],
1386 'right' => [
1387 'title' => esc_html__( 'Right', 'wpdirectorykit' ),
1388 'icon' => 'eicon-text-align-right',
1389 ],
1390 'justify' => [
1391 'title' => esc_html__( 'Justified', 'wpdirectorykit' ),
1392 'icon' => 'eicon-text-align-justify',
1393 ],
1394 ],
1395 'default' => 'left',
1396 'render_type' => 'ui',
1397 'selectors_dictionary' => [
1398 'top' => 'justify-content: flex-start;',
1399 'center' => 'justify-content: center;',
1400 'bottom' => 'justify-content: flex-end;',
1401 'justify' => 'justify-content: stretch;',
1402 ],
1403 'selectors' => [
1404 '{{WRAPPER}} '.$item['selector'] => '{{VALUE}};',
1405 ],
1406 ]
1407 );
1408 }
1409 $this->end_controls_section();
1410 }
1411 }
1412
1413 public function enqueue_styles_scripts() {
1414 wp_enqueue_style('slick');
1415 wp_enqueue_style('slick-theme');
1416 wp_enqueue_script('slick');
1417
1418 wp_enqueue_style('wdk-notify');
1419 wp_enqueue_script('wdk-notify');
1420 wp_enqueue_style('wdk-listings-carousel');
1421 }
1422 }
1423