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

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

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