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

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

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