PluginProbe
Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder / 2.0.5
Ultimate Store Kit – Store Builder Addons for Elementor, WooCommerce Store Builder, EDD Store Builder v2.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 2.0.5, at modules/edd-classic-grid/widgets/edd-classic-grid.php

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