PluginProbe ʕ •ᴥ•ʔ
Shortcodes and extra features for Phlox theme / 2.15.2
Shortcodes and extra features for Phlox theme v2.15.2
2.17.21 2.17.20 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.6 1.0.9 1.1.0 1.3.0 1.3.1 1.3.10 1.3.14 1.3.2 1.3.3 1.3.6 1.4.0 1.4.1 1.4.2 1.5.0 1.5.2 1.6.0 1.6.2 1.6.4 1.7.0 1.7.2 2.10.0 2.10.1 2.10.3 2.10.5 2.10.7 2.10.8 2.10.9 2.11.0 2.11.1 2.11.2 2.12.0 2.14.0 2.15.0 2.15.2 2.15.4 2.15.5 2.15.6 2.15.7 2.15.8 2.15.9 2.16.0 2.16.1 2.16.2 2.16.3 2.16.4 2.17.0 2.17.1 2.17.12 2.17.13 2.17.14 2.17.15 2.17.16 2.17.2 2.17.3 2.17.4 2.17.5 2.17.6 2.17.8 2.17.9 2.4.12 2.4.13 2.4.14 2.4.16 2.4.18 2.4.19 2.4.9 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.14 2.5.15 2.5.16 2.5.17 2.5.19 2.5.2 2.5.20 2.5.3 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.10 2.6.12 2.6.13 2.6.14 2.6.15 2.6.16 2.6.17 2.6.19 2.6.2 2.6.20 2.6.4 2.6.5 2.6.7 2.7.0 2.7.1 2.7.10 2.7.11 2.7.12 2.7.13 2.7.14 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.9 2.9.0 2.9.12 2.9.14 2.9.15 2.9.16 2.9.17 2.9.18 2.9.19 2.9.2 2.9.20 2.9.21 2.9.22 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 2.9.8
auxin-elements / includes / elementor / widgets / products-grid.php
auxin-elements / includes / elementor / widgets Last commit date
theme-elements 2 years ago accordion.php 4 years ago audio.php 4 years ago before-after.php 3 years ago button.php 4 years ago carousel-navigation.php 4 years ago circle-chart.php 3 years ago contact-box.php 4 years ago contact-form.php 4 years ago custom-list.php 4 years ago divider.php 4 years ago gallery.php 2 years ago gmap.php 4 years ago heading-modern.php 3 years ago icon.php 3 years ago image.php 4 years ago mailchimp.php 4 years ago modern-button.php 4 years ago products-grid.php 3 years ago quote.php 4 years ago recent-comments.php 4 years ago recent-posts-grid-carousel.php 4 years ago recent-posts-land-style.php 4 years ago recent-posts-masonry.php 4 years ago recent-posts-tiles-carousel.php 4 years ago recent-posts-tiles.php 4 years ago recent-posts-timeline.php 4 years ago recent-products.php 4 years ago responsive-table.php 3 years ago search.php 4 years ago staff.php 4 years ago svg.php 3 years ago tabs.php 3 years ago testimonial.php 4 years ago text.php 4 years ago touch-slider.php 4 years ago video.php 4 years ago
products-grid.php
1158 lines
1 <?php
2 namespace Auxin\Plugin\CoreElements\Elementor\Elements;
3
4 use Elementor\Plugin;
5 use Elementor\Core\Files\CSS\Post;
6 use Elementor\Widget_Base;
7 use Elementor\Controls_Manager;
8 use Elementor\Group_Control_Image_Size;
9 use Elementor\Group_Control_Typography;
10 use Elementor\Core\Schemes\Color;
11 use Elementor\Core\Schemes\Typography;
12 use Elementor\Utils;
13 use Elementor\Control_Media;
14 use Elementor\Group_Control_Border;
15 use Elementor\Group_Control_Box_Shadow;
16 use Elementor\Group_Control_Text_Shadow;
17 use Elementor\Group_Control_Background;
18
19 if ( ! defined( 'ABSPATH' ) ) {
20 exit; // Exit if accessed directly.
21 }
22
23 /**
24 * Elementor 'AdvancedRecentProducts' widget.
25 *
26 * Elementor widget that displays an 'AdvancedRecentProducts' with lightbox.
27 *
28 * @since 1.0.0
29 */
30 class ProductsGrid extends Widget_Base {
31
32 /**
33 * Get widget name.
34 *
35 * Retrieve 'AdvancedRecentProducts' widget name.
36 *
37 * @since 1.0.0
38 * @access public
39 *
40 * @return string Widget name.
41 */
42 public function get_name() {
43 return 'aux_product_grid';
44 }
45
46 /**
47 * Get widget title.
48 *
49 * Retrieve 'AdvancedRecentProducts' widget title.
50 *
51 * @since 1.0.0
52 * @access public
53 *
54 * @return string Widget title.
55 */
56 public function get_title() {
57 return __('Products Grid', 'auxin-elements' );
58 }
59
60 /**
61 * Get widget icon.
62 *
63 * Retrieve 'AdvancedRecentProducts' widget icon.
64 *
65 * @since 1.0.0
66 * @access public
67 *
68 * @return string Widget icon.
69 */
70 public function get_icon() {
71 return 'eicon-woocommerce auxin-badge-pro';
72 }
73
74 /**
75 * Get widget categories.
76 *
77 * Retrieve 'AdvancedRecentProducts' widget icon.
78 *
79 * @since 1.0.0
80 * @access public
81 *
82 * @return string Widget icon.
83 */
84 public function get_categories() {
85 return array( 'auxin-pro' );
86 }
87
88 /**
89 * Retrieve the terms in a given taxonomy or list of taxonomies.
90 *
91 * Retrieve 'AdvancedRecentProducts' widget icon.
92 *
93 * @since 1.0.0
94 * @access public
95 *
96 * @return string Widget icon.
97 */
98 public function get_terms() {
99 // Get terms
100 $terms = get_terms(
101 array(
102 'taxonomy' => 'product_cat',
103 'orderby' => 'count',
104 'hide_empty' => true
105 )
106 );
107
108 // Then create a list
109 $list = array();
110
111 if ( ! is_wp_error( $terms ) && is_array( $terms ) ){
112 foreach ( $terms as $key => $value ) {
113 $list[$value->term_id] = $value->name;
114 }
115 }
116
117 return $list;
118 }
119
120 /**
121 * Register 'AdvancedRecentProducts' widget controls.
122 *
123 * Adds different input fields to allow the user to change and customize the widget settings.
124 *
125 * @since 1.0.0
126 * @access protected
127 */
128 protected function register_controls() {
129 /*-------------------------------------------------------------------*/
130 /* Layout TAB
131 /*-------------------------------------------------------------------*/
132
133 /* Layout Section
134 /*-------------------------------------*/
135
136 $this->start_controls_section(
137 'layout_section',
138 array(
139 'label' => __('Layout', 'auxin-elements' ),
140 'tab' => Controls_Manager::TAB_LAYOUT
141 )
142 );
143
144 $this->add_control(
145 'columns',
146 array(
147 'label' => __( 'Columns', 'auxin-elements' ),
148 'type' => Controls_Manager::SELECT,
149 'default' => '4',
150 'options' => array(
151 '1' => '1',
152 '2' => '2',
153 '3' => '3',
154 '4' => '4',
155 '5' => '5',
156 ),
157 'frontend_available' => true,
158 )
159 );
160
161 $this->add_control(
162 'num',
163 array(
164 'label' => __('Number of posts to show', 'auxin-elements'),
165 'label_block' => true,
166 'type' => Controls_Manager::NUMBER,
167 'default' => '8',
168 'min' => 1,
169 'step' => 1
170 )
171 );
172
173 $this->end_controls_section();
174 /*-------------------------------------------------------------------*/
175 /* Content TAB
176 /*-------------------------------------------------------------------*/
177
178 /* Query Section
179 /*-------------------------------------*/
180
181 $this->start_controls_section(
182 'query_section',
183 array(
184 'label' => __('Query', 'auxin-elements' ),
185 )
186 );
187
188 $this->add_control(
189 'product_type',
190 array(
191 'label' => __('Products Type','auxin-elements' ),
192 'label_block' => true,
193 'type' => Controls_Manager::SELECT,
194 'options' => array(
195 'recent' => __('Recent Products' , 'auxin-elements'),
196 'featured' => __('Featured Products' , 'auxin-elements'),
197 'top_rated' => __('Top Rated Products', 'auxin-elements'),
198 'best_selling' => __('Best Selling Products' , 'auxin-elements'),
199 'sale' => __('On Sale Products' , 'auxin-elements'),
200 'deal' => __('Deal Products' , 'auxin-elements'),
201 ),
202 'default' => 'recent',
203 )
204 );
205
206 $this->add_control(
207 'cat',
208 array(
209 'label' => __('Categories', 'auxin-elements'),
210 'description' => __('Specifies a category that you want to show posts from it. In order to choose the all categories leave the field empty', 'auxin-elements' ),
211 'type' => Controls_Manager::SELECT2,
212 'multiple' => true,
213 'options' => $this->get_terms(),
214 'default' => array(),
215 )
216 );
217
218 $this->add_control(
219 'exclude_without_media',
220 array(
221 'label' => __('Exclude products without media','auxin-elements' ),
222 'type' => Controls_Manager::SWITCHER,
223 'label_on' => __( 'On', 'auxin-elements' ),
224 'label_off' => __( 'Off', 'auxin-elements' ),
225 'return_value' => 'yes',
226 'default' => 'yes'
227 )
228 );
229
230 $this->add_control(
231 'order_by',
232 array(
233 'label' => __('Order by', 'auxin-elements'),
234 'type' => Controls_Manager::SELECT,
235 'default' => 'date',
236 'options' => array(
237 'date' => __('Date', 'auxin-elements'),
238 'menu_order date' => __('Menu Order', 'auxin-elements'),
239 'title' => __('Title', 'auxin-elements'),
240 'ID' => __('ID', 'auxin-elements'),
241 'rand' => __('Random', 'auxin-elements'),
242 'comment_count' => __('Comments', 'auxin-elements'),
243 'modified' => __('Date Modified', 'auxin-elements'),
244 'author' => __('Author', 'auxin-elements'),
245 'post__in' => __('Inserted Post IDs', 'auxin-elements')
246 ),
247 )
248 );
249
250 $this->add_control(
251 'order',
252 array(
253 'label' => __('Order', 'auxin-elements'),
254 'type' => Controls_Manager::SELECT,
255 'default' => 'DESC',
256 'options' => array(
257 'DESC' => __('Descending', 'auxin-elements'),
258 'ASC' => __('Ascending', 'auxin-elements'),
259 ),
260 )
261 );
262
263 $this->add_control(
264 'only_products__in',
265 array(
266 'label' => __('Only products','auxin-elements' ),
267 'description' => __('If you intend to display ONLY specific products, you should specify the products here. You have to insert the Products IDs that are separated by comma (eg. 53,34,87,25).', 'auxin-elements' ),
268 'type' => Controls_Manager::TEXT
269 )
270 );
271
272 $this->add_control(
273 'include',
274 array(
275 'label' => __('Include products','auxin-elements' ),
276 'description' => __('If you intend to include additional products, you should specify the products here. You have to insert the Products IDs that are separated by comma (eg. 53,34,87,25)', 'auxin-elements' ),
277 'type' => Controls_Manager::TEXT
278 )
279 );
280
281 $this->add_control(
282 'exclude',
283 array(
284 'label' => __('Exclude products','auxin-elements' ),
285 'description' => __('If you intend to exclude specific products from result, you should specify the products here. You have to insert the Products IDs that are separated by comma (eg. 53,34,87,25)', 'auxin-elements' ),
286 'type' => Controls_Manager::TEXT
287 )
288 );
289
290 $this->add_control(
291 'offset',
292 array(
293 'label' => __('Start offset','auxin-elements' ),
294 'description' => __('Number of products to displace or pass over.', 'auxin-elements' ),
295 'type' => Controls_Manager::NUMBER,
296 'default' => ''
297 )
298 );
299
300 $this->end_controls_section();
301
302 /*-------------------------------------------------------------------*/
303 /* Settings TAB
304 /*-------------------------------------------------------------------*/
305 /*-----------------------------------------------------------------------------------*/
306 /* Rating Style Section
307 /*-----------------------------------------------------------------------------------*/
308
309 $this->start_controls_section(
310 'wrappers_section',
311 array(
312 'label' => __( 'Wrappers', 'auxin-elements' ),
313 'tab' => Controls_Manager::TAB_STYLE,
314 )
315 );
316
317 $this->add_responsive_control(
318 'wrapper_margin_bottom',
319 array(
320 'label' => __( 'Product Bottom space', 'auxin-elements' ),
321 'type' => Controls_Manager::SLIDER,
322 'range' => array(
323 'px' => array(
324 'max' => 100,
325 ),
326 ),
327 'selectors' => array(
328 '{{WRAPPER}} .type-product' => 'padding-bottom: {{SIZE}}{{UNIT}};',
329 ),
330 )
331 );
332
333 $this->add_responsive_control(
334 'wrapper_info_padding',
335 array(
336 'label' => __( 'Info Wrapper Padding', 'auxin-elements' ),
337 'type' => Controls_Manager::DIMENSIONS,
338 'size_units' => array( 'px', '%' ),
339 'selectors' => array(
340 '{{WRAPPER}} .aux-shop-info-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
341 ),
342 )
343 );
344
345 $this->add_responsive_control(
346 'wrapper_meta_padding',
347 array(
348 'label' => __( 'Meta Wrapper Padding', 'auxin-elements' ),
349 'type' => Controls_Manager::DIMENSIONS,
350 'size_units' => array( 'px', '%' ),
351 'selectors' => array(
352 '{{WRAPPER}} .aux-shop-meta-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
353 ),
354 )
355 );
356
357 $this->add_responsive_control(
358 'wrapper_desc_padding',
359 array(
360 'label' => __( 'Description Wrapper Padding', 'auxin-elements' ),
361 'type' => Controls_Manager::DIMENSIONS,
362 'size_units' => array( 'px', '%' ),
363 'selectors' => array(
364 '{{WRAPPER}} .aux-shop-desc-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
365 ),
366 )
367 );
368
369 $this->add_responsive_control(
370 'wrapper_btn_padding',
371 array(
372 'label' => __( 'Buttons Wrapper Padding', 'auxin-elements' ),
373 'type' => Controls_Manager::DIMENSIONS,
374 'size_units' => array( 'px', '%' ),
375 'selectors' => array(
376 '{{WRAPPER}} .aux-shop-btns-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
377 ),
378 )
379 );
380
381 $this->end_controls_section();
382
383 /*-----------------------------------------------------------------------------------*/
384 /* title_style_section
385 /*-----------------------------------------------------------------------------------*/
386
387 $this->start_controls_section(
388 'title_style_section',
389 array(
390 'label' => __( 'Title', 'auxin-elements' ),
391 'tab' => Controls_Manager::TAB_STYLE,
392 )
393 );
394
395 $this->start_controls_tabs( 'title_colors' );
396
397 $this->start_controls_tab(
398 'title_color_normal',
399 array(
400 'label' => __( 'Normal' , 'auxin-elements' ),
401 )
402 );
403
404 $this->add_control(
405 'title_color',
406 array(
407 'label' => __( 'Color', 'auxin-elements' ),
408 'type' => Controls_Manager::COLOR,
409 'selectors' => array(
410 '{{WRAPPER}} .auxshp-loop-title, {{WRAPPER}} .woocommerce-loop-product__title' => 'color: {{VALUE}};',
411 ),
412 )
413 );
414
415 $this->end_controls_tab();
416
417 $this->start_controls_tab(
418 'title_color_hover',
419 array(
420 'label' => __( 'Hover' , 'auxin-elements' ),
421 )
422 );
423
424 $this->add_control(
425 'title_hover_color',
426 array(
427 'label' => __( 'Color', 'auxin-elements' ),
428 'type' => Controls_Manager::COLOR,
429 'selectors' => array(
430 '{{WRAPPER}} .auxshp-loop-title:hover, {{WRAPPER}} .woocommerce-loop-product__title:hover' => 'color: {{VALUE}};',
431 ),
432 )
433 );
434
435 $this->end_controls_tab();
436
437 $this->end_controls_tabs();
438
439 $this->add_group_control(
440 Group_Control_Typography::get_type(),
441 array(
442 'name' => 'title_typography',
443 'scheme' => Typography::TYPOGRAPHY_1,
444 'selector' => '{{WRAPPER}} .auxshp-loop-title, {{WRAPPER}} .woocommerce-loop-product__title',
445 )
446 );
447
448 $this->end_controls_section();
449
450 /*-----------------------------------------------------------------------------------*/
451 /* price_style_section
452 /*-----------------------------------------------------------------------------------*/
453
454 $this->start_controls_section(
455 'price_style_section',
456 array(
457 'label' => __( 'Price', 'auxin-elements' ),
458 'tab' => Controls_Manager::TAB_STYLE,
459 )
460 );
461
462 $this->start_controls_tabs( 'price_colors' );
463
464 $this->start_controls_tab(
465 'price_color_normal',
466 array(
467 'label' => __( 'Normal' , 'auxin-elements' ),
468 )
469 );
470
471 $this->add_control(
472 'price_color',
473 array(
474 'label' => __( 'Color', 'auxin-elements' ),
475 'type' => Controls_Manager::COLOR,
476 'selectors' => array(
477 '{{WRAPPER}} .woocommerce-Price-amount' => 'color: {{VALUE}};',
478 ),
479 )
480 );
481
482 $this->end_controls_tab();
483
484 $this->start_controls_tab(
485 'price_color_hover',
486 array(
487 'label' => __( 'Hover' , 'auxin-elements' ),
488 )
489 );
490
491 $this->add_control(
492 'price_hover_color',
493 array(
494 'label' => __( 'Color', 'auxin-elements' ),
495 'type' => Controls_Manager::COLOR,
496 'selectors' => array(
497 '{{WRAPPER}} .woocommerce-Price-amount:hover' => 'color: {{VALUE}};',
498 ),
499 )
500 );
501
502 $this->end_controls_tab();
503
504 $this->end_controls_tabs();
505
506 $this->add_group_control(
507 Group_Control_Typography::get_type(),
508 array(
509 'name' => 'price_typography',
510 'scheme' => Typography::TYPOGRAPHY_1,
511 'selector' => '{{WRAPPER}} .woocommerce-Price-amount',
512 )
513 );
514
515 $this->end_controls_section();
516
517 if ( class_exists( 'AUXSHP') ) {
518
519 /*-----------------------------------------------------------------------------------*/
520 /* info_style_section
521 /*-----------------------------------------------------------------------------------*/
522
523 $this->start_controls_section(
524 'info_style_section',
525 array(
526 'label' => __( 'Product Info', 'auxin-elements' ),
527 'tab' => Controls_Manager::TAB_STYLE,
528 )
529 );
530
531 $this->start_controls_tabs( 'info_colors' );
532
533 $this->start_controls_tab(
534 'info_color_normal',
535 array(
536 'label' => __( 'Normal' , 'auxin-elements' ),
537 )
538 );
539
540 $this->add_control(
541 'info_color',
542 array(
543 'label' => __( 'Color', 'auxin-elements' ),
544 'type' => Controls_Manager::COLOR,
545 'selectors' => array(
546 '{{WRAPPER}} .aux-shop-meta-terms > a' => 'color: {{VALUE}};',
547 ),
548 )
549 );
550
551 $this->end_controls_tab();
552
553 $this->start_controls_tab(
554 'info_color_hover',
555 array(
556 'label' => __( 'Hover' , 'auxin-elements' ),
557 )
558 );
559
560 $this->add_control(
561 'info_hover_color',
562 array(
563 'label' => __( 'Color', 'auxin-elements' ),
564 'type' => Controls_Manager::COLOR,
565 'selectors' => array(
566 '{{WRAPPER}} .aux-shop-meta-terms > a:hover' => 'color: {{VALUE}};',
567 ),
568 )
569 );
570
571 $this->end_controls_tab();
572
573 $this->end_controls_tabs();
574
575 $this->add_group_control(
576 Group_Control_Typography::get_type(),
577 array(
578 'name' => 'info_typography',
579 'scheme' => Typography::TYPOGRAPHY_1,
580 'selector' => '{{WRAPPER}} .aux-shop-meta-terms, {{WRAPPER}} .aux-shop-meta-terms a',
581 )
582 );
583
584 $this->end_controls_section();
585
586 /*-----------------------------------------------------------------------------------*/
587 /* Description Style Section
588 /*-----------------------------------------------------------------------------------*/
589
590 $this->start_controls_section(
591 'desc_style_section',
592 array(
593 'label' => __( 'Description', 'auxin-elements' ),
594 'tab' => Controls_Manager::TAB_STYLE,
595 )
596 );
597
598 $this->start_controls_tabs( 'desc_colors' );
599
600 $this->start_controls_tab(
601 'desc_color_normal',
602 array(
603 'label' => __( 'Normal' , 'auxin-elements' ),
604 )
605 );
606
607 $this->add_control(
608 'desc_color',
609 array(
610 'label' => __( 'Color', 'auxin-elements' ),
611 'type' => Controls_Manager::COLOR,
612 'selectors' => array(
613 '{{WRAPPER}} .aux-shop-desc-wrapper' => 'color: {{VALUE}};',
614 ),
615 )
616 );
617
618 $this->end_controls_tab();
619
620 $this->start_controls_tab(
621 'desc_color_hover',
622 array(
623 'label' => __( 'Hover' , 'auxin-elements' ),
624 )
625 );
626
627 $this->add_control(
628 'desc_hover_color',
629 array(
630 'label' => __( 'Color', 'auxin-elements' ),
631 'type' => Controls_Manager::COLOR,
632 'selectors' => array(
633 '{{WRAPPER}} .aux-shop-desc-wrapper:hover' => 'color: {{VALUE}};',
634 ),
635 )
636 );
637
638 $this->end_controls_tab();
639
640 $this->end_controls_tabs();
641
642 $this->add_group_control(
643 Group_Control_Typography::get_type(),
644 array(
645 'name' => 'desc_typography',
646 'scheme' => Typography::TYPOGRAPHY_1,
647 'selector' => '{{WRAPPER}} .aux-shop-desc-wrapper',
648 )
649 );
650
651 $this->end_controls_section();
652
653 /*-----------------------------------------------------------------------------------*/
654 /* meta_fields_style_section
655 /*-----------------------------------------------------------------------------------*/
656
657 $this->start_controls_section(
658 'meta_fields_section',
659 array(
660 'label' => __( 'Meta Fields', 'auxin-elements' ),
661 'tab' => Controls_Manager::TAB_STYLE,
662 )
663 );
664
665 $this->start_controls_tabs( 'meta_fields_colors' );
666
667 $this->start_controls_tab(
668 'meta_fields_color_normal',
669 array(
670 'label' => __( 'Normal' , 'auxin-elements' ),
671 )
672 );
673
674 $this->add_control(
675 'meta_fields_color',
676 array(
677 'label' => __( 'Color', 'auxin-elements' ),
678 'type' => Controls_Manager::COLOR,
679 'selectors' => array(
680 '{{WRAPPER}} .aux-shop-meta-field span' => 'color: {{VALUE}};',
681 ),
682 )
683 );
684
685 $this->end_controls_tab();
686
687 $this->start_controls_tab(
688 'meta_fields_color_hover',
689 array(
690 'label' => __( 'Hover' , 'auxin-elements' ),
691 )
692 );
693
694 $this->add_control(
695 'meta_fields_hover_color',
696 array(
697 'label' => __( 'Color', 'auxin-elements' ),
698 'type' => Controls_Manager::COLOR,
699 'selectors' => array(
700 '{{WRAPPER}} .aux-shop-meta-field span:hover' => 'color: {{VALUE}};',
701 ),
702 )
703 );
704
705 $this->end_controls_tab();
706
707 $this->end_controls_tabs();
708
709 $this->add_group_control(
710 Group_Control_Typography::get_type(),
711 array(
712 'name' => 'meta_fields_typography',
713 'scheme' => Typography::TYPOGRAPHY_1,
714 'selector' => '{{WRAPPER}} .aux-shop-meta-field span',
715 )
716 );
717
718 $this->add_responsive_control(
719 'meta_fields_padding',
720 array(
721 'label' => __( 'Padding', 'auxin-elements' ),
722 'type' => Controls_Manager::DIMENSIONS,
723 'size_units' => array( 'px', '%' ),
724 'selectors' => array(
725 '{{WRAPPER}} .aux-shop-meta-field' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
726 ),
727 )
728 );
729
730 $this->end_controls_section();
731
732 /*-----------------------------------------------------------------------------------*/
733 /* Rating Style Section
734 /*-----------------------------------------------------------------------------------*/
735
736 $this->start_controls_section(
737 'rating_style_section',
738 array(
739 'label' => __( 'Rating', 'auxin-elements' ),
740 'tab' => Controls_Manager::TAB_STYLE,
741 )
742 );
743
744
745 $this->add_control(
746 'rating_empty_color',
747 array(
748 'label' => __( 'Empty Color', 'auxin-elements' ),
749 'type' => Controls_Manager::COLOR,
750 'selectors' => array(
751 '{{WRAPPER}} .aux-rating-box.aux-star-rating::before' => 'color: {{VALUE}} !important;'
752 )
753 )
754 );
755
756 $this->add_control(
757 'rating_fill_color',
758 array(
759 'label' => __( 'Fill Color', 'auxin-elements' ),
760 'type' => Controls_Manager::COLOR,
761 'selectors' => array(
762 '{{WRAPPER}} .aux-rating-box.aux-star-rating span::before' => 'color: {{VALUE}} !important;'
763 )
764 )
765 );
766
767 $this->add_responsive_control(
768 'rating_size',
769 array(
770 'label' => __( 'Size', 'auxin-elements' ),
771 'type' => Controls_Manager::SLIDER,
772 'size_units' => array( 'px', 'em', 'rem' ),
773 'range' => array(
774 'px' => array(
775 'min' => 1,
776 'max' => 200
777 )
778 ),
779 'selectors' => array(
780 '{{WRAPPER}} .aux-star-rating' => 'font-size: {{SIZE}}{{UNIT}};'
781 )
782 )
783 );
784
785
786 $this->end_controls_section();
787 }
788
789 /*-----------------------------------------------------------------------------------*/
790 /* Badge Style Section
791 /*-----------------------------------------------------------------------------------*/
792
793 $this->start_controls_section(
794 'badge_style_section',
795 array(
796 'label' => __( 'Sales Badge', 'auxin-elements' ),
797 'tab' => Controls_Manager::TAB_STYLE,
798 )
799 );
800
801
802 $this->start_controls_tabs( 'badge_colors' );
803
804 $this->start_controls_tab(
805 'badge_color_normal',
806 array(
807 'label' => __( 'Normal' , 'auxin-elements' ),
808 )
809 );
810
811 $this->add_control(
812 'badge_color',
813 array(
814 'label' => __( 'Color', 'auxin-elements' ),
815 'type' => Controls_Manager::COLOR,
816 'selectors' => array(
817 '{{WRAPPER}} .onsale, {{WRAPPER}} .auxin-onsale-badge' => 'color: {{VALUE}};',
818 ),
819 )
820 );
821
822 $this->end_controls_tab();
823
824 $this->start_controls_tab(
825 'badge_color_hover',
826 array(
827 'label' => __( 'Hover' , 'auxin-elements' ),
828 )
829 );
830
831 $this->add_control(
832 'badge_hover_color',
833 array(
834 'label' => __( 'Color', 'auxin-elements' ),
835 'type' => Controls_Manager::COLOR,
836 'selectors' => array(
837 '{{WRAPPER}} .onsale:hover, {{WRAPPER}} .auxin-onsale-badge:hover' => 'color: {{VALUE}};',
838 ),
839 )
840 );
841
842 $this->end_controls_tab();
843
844 $this->end_controls_tabs();
845
846 $this->add_group_control(
847 Group_Control_Typography::get_type(),
848 array(
849 'name' => 'badge_typography',
850 'scheme' => Typography::TYPOGRAPHY_1,
851 'selector' => '{{WRAPPER}} .onsale, {{WRAPPER}} .auxin-onsale-badge',
852 )
853 );
854
855 $this->add_responsive_control(
856 'wrapper_badge_padding',
857 array(
858 'label' => __( 'Padding', 'auxin-elements' ),
859 'type' => Controls_Manager::DIMENSIONS,
860 'size_units' => array( 'px', '%' ),
861 'selectors' => array(
862 '{{WRAPPER}} .onsale, {{WRAPPER}} .auxin-onsale-badge' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
863 ),
864 )
865 );
866
867 $this->add_group_control(
868 Group_Control_Background::get_type(),
869 array(
870 'name' => 'header_background',
871 'label' => __( 'Background', 'auxin-elements' ),
872 'types' => array( 'classic', 'gradient' ),
873 'selector' => '{{WRAPPER}} .onsale, {{WRAPPER}} .auxin-onsale-badge'
874 )
875 );
876
877 $this->end_controls_section();
878
879 if ( class_exists('AUXSHP') ) {
880 /*-----------------------------------------------------------------------------------*/
881 /* Badge Style Section
882 /*-----------------------------------------------------------------------------------*/
883
884 $this->start_controls_section(
885 'feat_badge_style_section',
886 array(
887 'label' => __( 'Featured Badge', 'auxin-elements' ),
888 'tab' => Controls_Manager::TAB_STYLE,
889 )
890 );
891
892
893 $this->start_controls_tabs( 'feat_badge_colors' );
894
895 $this->start_controls_tab(
896 'feat_badge_color_normal',
897 array(
898 'label' => __( 'Normal' , 'auxin-elements' ),
899 )
900 );
901
902 $this->add_control(
903 'feat_badge_color',
904 array(
905 'label' => __( 'Color', 'auxin-elements' ),
906 'type' => Controls_Manager::COLOR,
907 'selectors' => array(
908 '{{WRAPPER}} .aux-product-featured-badge' => 'color: {{VALUE}};',
909 ),
910 )
911 );
912
913 $this->end_controls_tab();
914
915 $this->start_controls_tab(
916 'feat_badge_color_hover',
917 array(
918 'label' => __( 'Hover' , 'auxin-elements' ),
919 )
920 );
921
922 $this->add_control(
923 'feat_badge_hover_color',
924 array(
925 'label' => __( 'Color', 'auxin-elements' ),
926 'type' => Controls_Manager::COLOR,
927 'selectors' => array(
928 '{{WRAPPER}} .aux-product-featured-badge:hover' => 'color: {{VALUE}};',
929 ),
930 )
931 );
932
933 $this->end_controls_tab();
934
935 $this->end_controls_tabs();
936
937 $this->add_group_control(
938 Group_Control_Typography::get_type(),
939 array(
940 'name' => 'feat_badge_typography',
941 'scheme' => Typography::TYPOGRAPHY_1,
942 'selector' => '{{WRAPPER}} .aux-product-featured-badge',
943 )
944 );
945
946 $this->add_responsive_control(
947 'wrapper_feat_badge_padding',
948 array(
949 'label' => __( 'Padding', 'auxin-elements' ),
950 'type' => Controls_Manager::DIMENSIONS,
951 'size_units' => array( 'px', '%' ),
952 'selectors' => array(
953 '{{WRAPPER}} .aux-product-featured-badge' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
954 ),
955 )
956 );
957
958 $this->add_group_control(
959 Group_Control_Background::get_type(),
960 array(
961 'name' => 'feat_badge_bg',
962 'label' => __( 'Background', 'auxin-elements' ),
963 'types' => array( 'classic', 'gradient' ),
964 'selector' => '{{WRAPPER}} .aux-product-featured-badge'
965 )
966 );
967
968 $this->end_controls_section();
969
970 }
971 /*-----------------------------------------------------------------------------------*/
972 /* Button
973 /*-----------------------------------------------------------------------------------*/
974
975 $this->start_controls_section(
976 'btn_section',
977 array(
978 'label' => __('Button', 'auxin-elements' ),
979 'tab' => Controls_Manager::TAB_STYLE,
980 )
981 );
982
983 $this->start_controls_tabs( 'btn_bg_tab' );
984
985 $this->start_controls_tab(
986 'btn_bg_normal',
987 array(
988 'label' => __( 'Normal' , 'auxin-elements' )
989 )
990 );
991
992 $this->add_group_control(
993 Group_Control_Background::get_type(),
994 array(
995 'name' => 'btn',
996 'label' => __( 'Background', 'auxin-elements' ),
997 'types' => array( 'classic', 'gradient' ),
998 'selector' => '{{WRAPPER}} .add_to_cart_button, {{WRAPPER}} a.button',
999 )
1000 );
1001
1002 $this->add_group_control(
1003 Group_Control_Box_Shadow::get_type(),
1004 array(
1005 'name' => 'btn_shadow',
1006 'selector' => '{{WRAPPER}} .add_to_cart_button, {{WRAPPER}} a.button'
1007 )
1008 );
1009
1010 $this->add_control(
1011 'btn_text_color',
1012 array(
1013 'label' => __( 'Color', 'auxin-elements' ),
1014 'type' => Controls_Manager::COLOR,
1015 'selectors' => array(
1016 '{{WRAPPER}} .add_to_cart_button, {{WRAPPER}} a.button' => 'color: {{VALUE}};',
1017 )
1018 )
1019 );
1020
1021 $this->add_group_control(
1022 Group_Control_Text_Shadow::get_type(),
1023 array(
1024 'name' => 'btn_text_shadow',
1025 'label' => __( 'Text Shadow', 'auxin-elements' ),
1026 'selector' => '{{WRAPPER}} .add_to_cart_button, {{WRAPPER}} a.button',
1027 )
1028 );
1029
1030 $this->add_group_control(
1031 Group_Control_Typography::get_type(),
1032 array(
1033 'name' => 'btn_text_typography',
1034 'scheme' => Typography::TYPOGRAPHY_1,
1035 'selector' => '{{WRAPPER}} .add_to_cart_button, {{WRAPPER}} a.button'
1036 )
1037 );
1038
1039 $this->end_controls_tab();
1040
1041 $this->start_controls_tab(
1042 'btn_bg_hover',
1043 array(
1044 'label' => __( 'Hover' , 'auxin-elements' )
1045 )
1046 );
1047
1048 $this->add_group_control(
1049 Group_Control_Background::get_type(),
1050 array(
1051 'name' => 'btn_bg_hover',
1052 'label' => __( 'Background', 'auxin-elements' ),
1053 'types' => array( 'classic', 'gradient' ),
1054 'selector' => '{{WRAPPER}} .add_to_cart_button:hover, {{WRAPPER}} a.button:hover',
1055 )
1056 );
1057
1058 $this->add_group_control(
1059 Group_Control_Box_Shadow::get_type(),
1060 array(
1061 'name' => 'btn_shadow_hover',
1062 'selector' => '{{WRAPPER}} .add_to_cart_button:hover, {{WRAPPER}} a.button:hover'
1063 )
1064 );
1065
1066 $this->add_control(
1067 'btn_text_color_hover',
1068 array(
1069 'label' => __( 'Color', 'auxin-elements' ),
1070 'type' => Controls_Manager::COLOR,
1071 'selectors' => array(
1072 '{{WRAPPER}} .add_to_cart_button, {{WRAPPER}} a.button' => 'color: {{VALUE}};',
1073 )
1074 )
1075 );
1076
1077 $this->add_group_control(
1078 Group_Control_Text_Shadow::get_type(),
1079 array(
1080 'name' => 'btn_text_shadow_hover',
1081 'label' => __( 'Text Shadow', 'auxin-elements' ),
1082 'selector' => '{{WRAPPER}} .add_to_cart_button, {{WRAPPER}} a.button',
1083 )
1084 );
1085
1086 $this->add_group_control(
1087 Group_Control_Typography::get_type(),
1088 array(
1089 'name' => 'btn_text_typography_hover',
1090 'scheme' => Typography::TYPOGRAPHY_1,
1091 'selector' => '{{WRAPPER}} .add_to_cart_button, {{WRAPPER}} a.button'
1092 )
1093 );
1094
1095 $this->end_controls_tab();
1096
1097 $this->end_controls_tabs();
1098
1099 $this->add_responsive_control(
1100 'btn_padding',
1101 array(
1102 'label' => __( 'Button Padding', 'auxin-elements' ),
1103 'type' => Controls_Manager::DIMENSIONS,
1104 'size_units' => array( 'px', '%' ),
1105 'selectors' => array(
1106 '{{WRAPPER}} .add_to_cart_button, {{WRAPPER}} a.button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1107 ),
1108 )
1109 );
1110
1111 $this->end_controls_section();
1112
1113
1114 }
1115
1116 /**
1117 * Render image box widget output on the frontend.
1118 *
1119 * Written in PHP and used to generate the final HTML.
1120 *
1121 * @since 1.0.0
1122 * @access protected
1123 */
1124 protected function render() {
1125
1126 // Check whether required resources are available
1127 if( ! auxin_is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
1128 auxin_elementor_plugin_missing_notice( array( 'plugin_name' => __( 'WooCommerce', 'auxin-elements' ) ) );
1129 return;
1130 }
1131
1132 $settings = $this->get_settings_for_display();
1133
1134 $args = array(
1135 'desktop_cnum' => $settings['columns'],
1136
1137 // Query section
1138 'product_type' => $settings['product_type'],
1139
1140 // Query section
1141 'cat' => $settings['cat'],
1142 'num' => $settings['num'],
1143 'exclude_without_media' => $settings['exclude_without_media'],
1144 'order_by' => $settings['order_by'],
1145 'order' => $settings['order'],
1146 'include' => $settings['include'],
1147 'exclude' => $settings['exclude'],
1148 'only_products__in' => $settings['only_products__in'],
1149
1150 );
1151
1152 // // get the shortcode base blog page
1153 echo auxin_widget_products_grid_callback( $args );
1154
1155 }
1156
1157 }
1158