PluginProbe
Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder / 3.0.2
Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder v3.0.2
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 / edd-trendy-grid / widgets / edd-trendy-grid.php

edd-trendy-grid.php in Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder 3.0.2, at modules/edd-trendy-grid/widgets/edd-trendy-grid.php

213 lines 8.6 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\EddTrendyGrid\Widgets;
4
5 use UltimateStoreKit\Base\Module_Base;
6 use UltimateStoreKit\Traits\Global_EDD_Widget_Controls;
7 use UltimateStoreKit\Traits\Global_Widget_Template;
8 use UltimateStoreKit\Includes\Controls\GroupQuery\Group_Control_Query;
9 use UltimateStoreKit\Classes\Utils;
10 use WP_Query;
11
12 if (!defined('ABSPATH')) {
13 exit;
14 }
15
16 // Exit if accessed directly
17
18 class EDD_Trendy_Grid extends Module_Base {
19 use Global_EDD_Widget_Controls;
20 use Global_Widget_Template;
21 use Group_Control_Query;
22 /**
23 * @var \WP_Query
24 */
25 private $_query = null;
26 public function get_name() {
27 return 'usk-edd-trendy-grid';
28 }
29
30 public function get_title() {
31 return esc_html__('EDD Trendy Grid', 'ultimate-store-kit');
32 }
33
34 public function get_icon() {
35 return 'usk-widget-icon usk-icon-edd-trendy-grid';
36 }
37
38 public function get_categories() {
39 return ['ultimate-store-kit'];
40 }
41
42 public function get_keywords() {
43 return ['product', 'product grid', 'table', 'wc', 'grid', 'list'];
44 }
45
46 public function get_style_depends() {
47 if ($this->usk_is_edit_mode()) {
48 return ['usk-all-styles'];
49 } else {
50 return ['usk-font', 'usk-edd-trendy-grid'];
51 }
52 }
53
54 public function get_query() {
55 return $this->_query;
56 }
57 public function has_widget_inner_wrapper(): bool {
58 return ! \Elementor\Plugin::$instance->experiments->is_feature_active( 'e_optimized_markup' );
59 }
60 protected function register_controls() {
61 /**
62 * render controls layout
63 */
64 $this->register_global_edd_controls_grid_layout();
65 $this->register_global_edd_controls_query();
66 $this->register_global_edd_controls_additional();
67
68 /**
69 * render style controls
70 */
71 $this->register_global_edd_style_controls_items();
72 // $this->register_global_edd_controls_grid_image();
73 $this->register_global_edd_style_controls_title();
74 $this->register_global_edd_style_controls_category();
75 $this->register_global_edd_style_controls_price();
76 $this->register_global_edd_style_controls_action_button();
77 $this->register_global_edd_controls_grid_pagination();
78 }
79 public function render_header() {
80 $settings = $this->get_settings_for_display();
81 $this->add_render_attribute('usk-edd-trendy-grid', 'class', ['usk-edd-trendy-grid'], true);
82 $this->add_render_attribute('usk-edd-trendy-grid', 'data-filter', [$settings['show_tab']]);
83 ?>
84 <div class="ultimate-store-kit">
85 <div <?php $this->print_render_attribute_string('usk-edd-trendy-grid'); ?>>
86 <?php
87 }
88 public function render_footer() { ?>
89 </div>
90 </div>
91 <?php
92 }
93
94 public function render() {
95 $this->render_header();
96 $this->render_loop_item();
97 $this->render_footer();
98 }
99 public function render_loop_item() {
100 $settings = $this->get_settings_for_display();
101 $id = 'usk-edd-trendy-grid-' . $this->get_id();
102 $this->query_product();
103 $wp_query = $this->get_query();
104 if ($wp_query->have_posts()) {
105 $this->add_render_attribute(
106 [
107 'edd-trendy-grids-wrapper' => [
108 'class' => [
109 'usk-edd-trendy-grid-wrapper'
110 ],
111 'id' => esc_attr($id),
112 ],
113 ]
114 );
115
116 ?>
117 <div <?php $this->print_render_attribute_string('edd-trendy-grids-wrapper'); ?>>
118 <?php
119 while ($wp_query->have_posts()) {
120 $wp_query->the_post();
121
122 $this->add_render_attribute('edd-trendy-grid-item', 'class', 'usk-edd-trendy-grid-item', true);
123 ?>
124 <div <?php $this->print_render_attribute_string('edd-trendy-grid-item'); ?>>
125 <div class="usk-item-box">
126 <div class="usk-top-content">
127 <?php
128 if ($settings['show_category']) :
129 $category_list = wp_get_post_terms(get_the_ID(), 'download_category');
130 foreach ($category_list as $term) {
131 $term_link = get_term_link($term);
132 printf(
133 '<%1$s class="usk-edd-category"><a href="%2$s">%3$s</a></%1$s> ',
134 esc_attr( Utils::get_valid_html_tag( $settings['category_tags'] ) ),
135 esc_url( $term_link ),
136 esc_html( $term->name )
137 );
138 }
139 endif;
140
141 if ($settings['show_title']) :
142 printf(
143 '<%1$s class="usk-edd-title"><a href="%2$s">%3$s</a></%1$s>',
144 esc_attr(Utils::get_valid_html_tag($settings['title_tags'])),
145 esc_url(get_the_permalink()),
146 esc_html(get_the_title())
147 );
148 endif; ?>
149 </div>
150 <div class="usk-edd-trendy-grid-image">
151 <a href="<?php the_permalink(); ?>">
152 <img src="<?php echo esc_url(wp_get_attachment_image_url(get_post_thumbnail_id(), $settings['image_size'])); ?>" alt="<?php echo esc_html(get_the_title()); ?>">
153 </a>
154 <div class="usk-action-button">
155 <?php if (function_exists('edd_price')) { ?>
156 <?php if (!edd_has_variable_prices(get_the_ID())) { ?>
157 <?php echo wp_kses_post(edd_get_purchase_link(get_the_ID(), 'Add to Cart', 'button')); ?>
158 <?php } ?>
159 <?php } ?>
160 <div class="usk-details-button">
161 <a href="<?php the_permalink(); ?>"><span><?php esc_html_e('View Details', 'ultimate-store-kit'); ?></span></a>
162 </div>
163 </div>
164 </div>
165 <div class="usk-edd-content">
166 <?php
167 if ($settings['show_price']) : ?>
168 <div class="usk-edd-price">
169 <?php if (edd_has_variable_prices(get_the_ID())) {
170 esc_html_e('Starting at: ', 'ultimate-store-kit');
171 edd_price(get_the_ID());
172 } else {
173 edd_price(get_the_ID());
174 }
175 ?>
176 </div>
177 <?php
178 endif; ?>
179 </div>
180
181 </div>
182 </div>
183
184 <?php
185 }
186 ?>
187 </div>
188 <?php
189 if ($settings['show_pagination']) {
190 ?>
191 <div class="usk-pagination">
192 <?php ultimate_store_kit_post_pagination($wp_query); ?>
193 </div>
194 <?php
195 wp_reset_postdata();
196 }
197 }
198 }
199 public function query_product() {
200 $settings = $this->get_settings_for_display();
201 $args = [];
202 if ($settings['show_pagination']) {
203 $args['paged'] = max(1, get_query_var('paged'), get_query_var('page'));
204 }
205 $default = $this->getGroupControlQueryArgs();
206 $args['post_type'] = 'download';
207 $args['posts_per_page'] = $settings['product_limit'];
208 $default = $this->getGroupControlQueryArgs();
209 $args = array_merge($default, $args);
210 $this->_query = new WP_Query($args);
211 }
212 }
213