PluginProbe
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution with eCommerce Templates & Woo Widgets / 1.4.0
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution with eCommerce Templates & Woo Widgets v1.4.0
4.9.5 4.9.4 4.9.3 4.9.2 4.9.1 4.9.0 2.0.0 2.1.0 2.2.0 2.2.1 2.2.2 2.3.0 2.4.0 2.5.0 2.5.1 3.0.0 3.1.0 3.1.1 4.0.0 4.0.1 4.1.0 4.1.1 4.2.0 4.2.1 4.3.0 All 85 releases
← All changes | plugin.php +66 -135 3.0.01.4.0 View file →
@@ -3,13 +3,11 @@
3 3 namespace ShopEngine;
4 4
5 5 use ShopEngine\Compatibility\Conflicts\Manifest as Conflict_Manifest;
6 6 use ShopEngine\Core\Builders\Base;
7 -use ShopEngine\Compatibility\Migrations\LangMigration;
8 7 use ShopEngine\Core\Query_Modifier;
9 8 use ShopEngine\Core\Template_Cpt;
10 9 use ShopEngine\Libs\License\License_Route;
11 -use ShopEngine\Libs\Rating\Rating;
12 10 use ShopEngine\Libs\Updater\Init as Updater;
13 11 use ShopEngine\Modules\Manifest as Module_Manifest;
14 12 use ShopEngine\Widgets\Manifest;
15 13
@@ -51,50 +49,28 @@
51 49
52 50 $error = true;
53 51 }
54 52
55 - $check_elementor_version = false;
56 -
57 53 // Check if Elementor installed and activated.
58 - if(!did_action('elementor/loaded')) {
54 + if(!did_action('elementor/loaded')) {
55 + add_action('admin_notices', [$this, 'missing_elementor']);
59 56
60 - if(!did_action('shopengine-gutenberg-addon/before_loaded')) {
57 + $error = true;
58 + }
61 59
62 - add_action('admin_notices', [$this, 'missing_elementor']);
63 -
64 - $error = true;
65 - }
66 - }
67 -
68 60 // Check for required Elementor version.
69 - if(did_action('elementor/loaded') && defined('ELEMENTOR_VERSION') && !version_compare(ELEMENTOR_VERSION, '3.0.0', '>=')) {
61 + if(defined('ELEMENTOR_VERSION') && !version_compare(ELEMENTOR_VERSION, '3.0.0', '>=')) {
62 + add_action('admin_notices', [$this, 'failed_elementor_version']);
70 63
71 - add_action('admin_notices', [$this, 'failed_elementor_version']);
64 + $error = true;
65 + }
72 66
73 - $error = true;
74 - }
67 + if($error) {
75 68
76 - if($error) {
77 69 return;
78 70 }
79 -
80 - add_filter("plugin_action_links_shopengine/shopengine.php", function ($links) {
81 - $free = esc_html__("Go To Shopengine","shopengine");
82 - $pro = esc_html__("Go To ShopenginePro","shopengine");
83 71
84 - $custom_links[] = '<a title="' . $free . '" href="'.admin_url('edit.php?post_type=shopengine-template#getting-started').'" target="_blank">' . esc_html__('Settings', 'shopengine') . '</a>';
85 72
86 - foreach ($custom_links as $custom_link):
87 - array_unshift($links, $custom_link);
88 - endforeach;
89 -
90 - if (!is_plugin_active('shopengine-pro/shopengine-pro.php')) {
91 - $links[] = '<a title="' . $pro . '" href="https://wpmet.com/plugin/shopengine/pricing/" style="color:#FCB214;font-weight:700" target="_blank" rel="noopener">' . esc_html__('Go Pro', 'shopengine') . '</a>';
92 - }
93 - return $links;
94 - });
95 -
96 -
97 73 /**
98 74 * Routes initialization
99 75 *
100 76 */
@@ -107,16 +83,32 @@
107 83 add_action('admin_init', function () {
108 84 if(class_exists('ShopEngine_Pro')) {
109 85 new Updater();
110 86 }
87 +
111 88 });
112 89
90 + global $pagenow;
113 91
114 - add_action('wp_loaded', function () {
92 + if(is_admin() && $pagenow == 'post.php' && $_REQUEST['action'] === 'edit') {
115 93
94 + $pid = $_REQUEST['post'];
95 + $po = get_post($pid);
96 +
97 + if($po->post_type === Template_Cpt::TYPE) {
98 +
99 + $url = get_admin_url(). 'edit.php?post_type='.Template_Cpt::TYPE.'#'.Template_Cpt::TYPE;
100 +
101 + wp_safe_redirect( $url );
102 + exit;
103 + }
104 + }
105 +
106 + add_action('wp_loaded', function (){
107 +
116 108 if(isset($_REQUEST['preview']) && $_REQUEST['preview'] == 'true' && !empty($_REQUEST['preview_id'])) {
117 109
118 - $pid = (int)$_REQUEST['preview_id'];
110 + $pid = (int) $_REQUEST['preview_id'];
119 111
120 112 $po = get_post($pid);
121 113
122 114 if($po->post_type === Template_Cpt::TYPE) {
@@ -122,54 +114,41 @@
122 114 if($po->post_type === Template_Cpt::TYPE) {
123 115
124 116 $template = \ShopEngine\Core\Builders\Templates::get_registered_template_data($pid);
125 117
126 - if(empty($template) || !isset($template['url'])) {
127 - return;
118 + if(empty($template) || !isset($template['url'])){
119 +
120 + die('There are some errors.');
128 121 }
129 122
130 123 $param = [
131 124 'shopengine_template_id' => $pid,
132 - 'preview_nonce' => wp_create_nonce('template_preview_' . $pid),
133 - 'change_template' => '1',
125 + 'preview_nonce' => wp_create_nonce( 'template_preview_' . $pid ),
126 + 'change_template' => '1'
134 127 ];
135 128
136 129 $url = \ShopEngine\Utils\Helper::add_to_url($template['url'], $param);
137 130
138 - wp_safe_redirect($url);
131 + wp_safe_redirect( $url );
139 132 exit;
140 133 }
141 134 }
142 -
143 - /**
144 - * migrate data
145 - */
146 - LangMigration::instance()->init();
147 135 });
148 136
149 - // avoid themes for loading woocommerce functions
150 - $avoid_themes = ['avada', 'avada child'];
151 137
152 - if(!in_array(strtolower(wp_get_theme()), $avoid_themes)) {
153 - /**
154 - * Ensuring woocommerce functions are loaded before theme is modifying those
155 - *
156 - */
157 - require_once WC_ABSPATH . '/includes/wc-template-functions.php';
158 - }
138 + /**
139 + * Ensuring woocommerce functions are loaded before theme is modifying those
140 + *
141 + */
142 + require_once WC_ABSPATH . '/includes/wc-template-functions.php';
159 143
160 144
161 - if(did_action('elementor/loaded')) {
162 - // Load custom elementor controls
163 - new \ShopEngine\Core\Elementor_Controls\Init();
145 + // Load custom elementor controls
146 + new \ShopEngine\Core\Elementor_Controls\Init();
164 147
165 - //Loading the scripts and styles
166 - add_action('elementor/editor/after_enqueue_styles', [$this, 'js_css_elementor']);
167 - }
168 -
169 -
170 - //Loading public scripts and styles
148 + //Loading the scripts and styles
171 149 add_action('wp_enqueue_scripts', [$this, 'js_css_public']);
150 + add_action('elementor/editor/after_enqueue_styles', [$this, 'js_css_elementor']);
172 151
173 152 //woocommece theme support
174 153 if(!current_theme_supports('woocommerce')) {
175 154 add_theme_support('woocommerce');
@@ -177,111 +156,60 @@
177 156 add_theme_support('wc-product-gallery-lightbox');
178 157 add_theme_support('wc-product-gallery-slider');
179 158 }
180 159
160 +
181 161 #Registering new post-type & etc
182 162 Base::instance()->init();
183 163
184 - Rating::instance('shopengine')
185 - ->set_plugin( 'ShopEngine', 'https://wpmet.com/wordpress.org/rating/shopengine' )
186 - ->set_plugin_logo( 'https://ps.w.org/shopengine/assets/icon-256x256.gif?rev=2505061', 'width:150px !important' )
187 - ->set_priority( 10 )
188 - ->set_first_appear_day( 7 )
189 - ->set_condition( true )
190 - ->call();
191 -
192 - \ShopEngine\Core\MultiLanguage\Language::instance()->init();
193 -
194 164 \ShopEngine\Core\Settings\Base::instance()->init();
195 165
196 - new Libs\Select_Api\Base();
166 + (new Module_Manifest)->init();
197 167
198 - (new Module_Manifest())->init();
199 -
200 168 // working get instance of elementor widget
201 - (new Manifest())->init();
169 + (new Manifest)->init();
202 170
203 171 Query_Modifier::instance()->init();
204 172
205 - (new Conflict_Manifest())->init();
173 + (new Conflict_Manifest)->init();
206 174
207 175 // view count
208 - add_action('get_header', [$this, 'shopengine_track_product_views']);
176 + add_action('wp_head', [$this, 'shopengine_track_product_views']);
209 177
210 178 // database migrations
211 179 // (new \ShopEngine\Compatibility\Migrations\Migration())->init();
212 - // (new \ShopEngine\Compatibility\Migrations\Temp_Migration())->init();
180 + (new \ShopEngine\Compatibility\Migrations\Temp_Migration())->init();
213 181
214 -
215 - // call service providers
216 -
217 - $service_providers = include \ShopEngine::plugin_dir().'core/service-provider-manager.php';
218 - $method = 'init';
219 - foreach( $service_providers as $service_provider ){
220 -
221 - if(class_exists($service_provider) && method_exists($service_provider, $method)) {
222 - $instance = new $service_provider();
223 - $instance->$method();
224 - }
225 -
226 - }
227 -
228 182 add_filter('script_loader_tag', [$this, 'filter_load_type'], 99, 3);
229 183 }
230 184
231 185
232 - // add async and defer attributes to enqueued scripts
233 - public function filter_load_type($tag, $handle, $src) {
234 -
235 - if(strpos($handle, '-async') !== false) {
236 - $tag = str_replace(' src', ' async="async" src', $tag);
186 + // add async and defer attributes to enqueued scripts
187 + public function filter_load_type($tag, $handle, $src) {
188 +
189 + if (strpos($handle, '-async') !== false) {
190 + $tag = str_replace(' src', ' async="async" src', $tag);
191 + }
192 +
193 + if (strpos($handle, '-defer') !== false) {
194 + $tag = str_replace('<script ', '<script defer ', $tag);
195 + }
196 +
197 + return $tag;
237 198 }
238 199
239 - if(strpos($handle, '-defer') !== false) {
240 - $tag = str_replace('<script ', '<script defer ', $tag);
241 - }
242 -
243 - return $tag;
244 - }
245 -
246 200 /**
247 201 * Public function shopengine_track_product_views
248 202 * Adding Product Views Count Meta
249 203 */
250 - public function shopengine_track_product_views() {
251 -
204 + public function shopengine_track_product_views($product_id) {
252 205 if(class_exists('WooCommerce') && !is_product()) {
253 206 return;
254 207 }
255 -
256 208 $product_id = get_the_id();
257 209
258 - $cookie_name = "shopengine_recent_viewed_product";
259 -
260 - if(isset($_COOKIE[$cookie_name])) {
261 -
262 - $cookie_ids = $_COOKIE[$cookie_name];
263 - $product_ids = explode(',', $cookie_ids);
264 -
265 - if(!is_array($product_ids)) {
266 - $product_ids = [$product_ids];
267 - }
268 -
269 - $product_ids = array_combine($product_ids, $product_ids);
270 - unset($product_ids[$product_id]);
271 - $product_ids[] = $product_id;
272 -
273 - $cookie_value = implode(',', $product_ids);
274 -
275 - } else {
276 - $cookie_value = $product_id;
277 - }
278 -
279 - setcookie($cookie_name, $cookie_value, strtotime('+30 days'), '/' );
280 -
281 210 $count_key = 'shopengine_product_views_count';
282 211 $count = get_post_meta($product_id, $count_key, true);
283 -
284 212 if($count == '') {
285 213 $count = 1;
286 214 delete_post_meta($product_id, $count_key);
287 215 add_post_meta($product_id, $count_key, '1');
@@ -296,10 +224,12 @@
296 224 * Include public function
297 225 *
298 226 * @since 1.0.0
299 227 */
300 - public function js_css_public() {
301 - wp_register_style('shopengine-public', \ShopEngine::plugin_url() . 'assets/css/shopengine-public.css', false, \ShopEngine::version());
228 + public function js_css_public() {
229 + wp_enqueue_style('shopengine-icon', \ShopEngine::plugin_url() . 'assets/css/shopengine-icon.css', false, \ShopEngine::version());
230 + wp_enqueue_style('shopengine-simple-scrollbar-css', \ShopEngine::plugin_url() . 'assets/css/simple-scrollbar.css', false, \ShopEngine::version());
231 + wp_enqueue_style('shopengine-public-css', \ShopEngine::plugin_url() . 'assets/css/public-style.css', false, \ShopEngine::version());
302 232
303 233 // Modal Stylesheet
304 234 wp_register_style('shopengine-modal-styles', \ShopEngine::plugin_url() . 'assets/css/shopengine-modal.css', false, \ShopEngine::version());
305 235
@@ -434,5 +364,6 @@
434 364 }
435 365
436 366 return self::$instance;
437 367 }
368 +
438 369 }