PluginProbe
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution with eCommerce Templates & Woo Widgets / 1.3.3
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution with eCommerce Templates & Woo Widgets v1.3.3
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 +40 -138 4.3.01.3.3 View file →
@@ -3,13 +3,10 @@
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 -use ShopEngine\Core\Template_Cpt;
10 8 use ShopEngine\Libs\License\License_Route;
11 -use ShopEngine\Libs\Rating\Rating;
12 9 use ShopEngine\Libs\Updater\Init as Updater;
13 10 use ShopEngine\Modules\Manifest as Module_Manifest;
14 11 use ShopEngine\Widgets\Manifest;
15 12
@@ -51,50 +48,28 @@
51 48
52 49 $error = true;
53 50 }
54 51
55 - $check_elementor_version = false;
56 -
57 52 // Check if Elementor installed and activated.
58 - if(!did_action('elementor/loaded')) {
53 + if(!did_action('elementor/loaded')) {
54 + add_action('admin_notices', [$this, 'missing_elementor']);
59 55
60 - if(!did_action('shopengine-gutenberg-addon/before_loaded')) {
56 + $error = true;
57 + }
61 58
62 - add_action('admin_notices', [$this, 'missing_elementor']);
63 -
64 - $error = true;
65 - }
66 - }
67 -
68 59 // Check for required Elementor version.
69 - if(did_action('elementor/loaded') && defined('ELEMENTOR_VERSION') && !version_compare(ELEMENTOR_VERSION, '3.0.0', '>=')) {
60 + if(defined('ELEMENTOR_VERSION') && !version_compare(ELEMENTOR_VERSION, '3.0.0', '>=')) {
61 + add_action('admin_notices', [$this, 'failed_elementor_version']);
70 62
71 - add_action('admin_notices', [$this, 'failed_elementor_version']);
63 + $error = true;
64 + }
72 65
73 - $error = true;
74 - }
66 + if($error) {
75 67
76 - if($error) {
77 68 return;
78 69 }
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 70
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 71
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 72 /**
98 73 * Routes initialization
99 74 *
100 75 */
@@ -107,41 +82,24 @@
107 82 add_action('admin_init', function () {
108 83 if(class_exists('ShopEngine_Pro')) {
109 84 new Updater();
110 85 }
111 - new \ShopEngine\Compatibility\Migrations\Direct_Checkout;
112 86 });
113 87
114 88
115 - add_action('wp_loaded', function () {
116 - /**
117 - * migrate data
118 - */
119 - LangMigration::instance()->init();
120 - });
89 + /**
90 + * Ensuring woocommerce functions are loaded before theme is modifying those
91 + *
92 + */
93 + require_once WC_ABSPATH . '/includes/wc-template-functions.php';
121 94
122 - // avoid themes for loading woocommerce functions
123 - $avoid_themes = ['avada', 'avada child', 'woodmart', 'woodmart child'];
124 - if(!in_array(strtolower(wp_get_theme()), $avoid_themes)) {
125 - /**
126 - * Ensuring woocommerce functions are loaded before theme is modifying those
127 - *
128 - */
129 - require_once WC_ABSPATH . '/includes/wc-template-functions.php';
130 - }
131 95
96 + // Load custom elementor controls
97 + new \ShopEngine\Core\Elementor_Controls\Init();
132 98
133 - if(did_action('elementor/loaded')) {
134 - // Load custom elementor controls
135 - new \ShopEngine\Core\Elementor_Controls\Init();
136 -
137 - //Loading the scripts and styles
138 - add_action('elementor/editor/after_enqueue_styles', [$this, 'js_css_elementor']);
139 - }
140 -
141 -
142 - //Loading public scripts and styles
99 + //Loading the scripts and styles
143 100 add_action('wp_enqueue_scripts', [$this, 'js_css_public']);
101 + add_action('elementor/editor/after_enqueue_styles', [$this, 'js_css_elementor']);
144 102
145 103 //woocommece theme support
146 104 if(!current_theme_supports('woocommerce')) {
147 105 add_theme_support('woocommerce');
@@ -149,111 +107,44 @@
149 107 add_theme_support('wc-product-gallery-lightbox');
150 108 add_theme_support('wc-product-gallery-slider');
151 109 }
152 110
111 +
153 112 #Registering new post-type & etc
154 113 Base::instance()->init();
155 114
156 - Rating::instance('shopengine')
157 - ->set_plugin( 'ShopEngine', 'https://wpmet.com/wordpress.org/rating/shopengine' )
158 - ->set_plugin_logo( 'https://ps.w.org/shopengine/assets/icon-256x256.gif?rev=2505061', 'width:150px !important' )
159 - ->set_priority( 10 )
160 - ->set_first_appear_day( 7 )
161 - ->set_condition( true )
162 - ->call();
163 -
164 - \ShopEngine\Core\MultiLanguage\Language::instance()->init();
165 -
166 115 \ShopEngine\Core\Settings\Base::instance()->init();
167 116
168 - new Libs\Select_Api\Base();
117 + (new Module_Manifest)->init();
169 118
170 - (new Module_Manifest())->init();
171 -
172 119 // working get instance of elementor widget
173 - (new Manifest())->init();
120 + (new Manifest)->init();
174 121
175 122 Query_Modifier::instance()->init();
176 123
177 - (new Conflict_Manifest())->init();
124 + (new Conflict_Manifest)->init();
178 125
179 126 // view count
180 - add_action('get_header', [$this, 'shopengine_track_product_views']);
127 + add_action('wp_head', [$this, 'shopengine_track_product_views']);
181 128
182 129 // database migrations
183 130 // (new \ShopEngine\Compatibility\Migrations\Migration())->init();
184 - // (new \ShopEngine\Compatibility\Migrations\Temp_Migration())->init();
185 -
186 -
187 - // call service providers
188 -
189 - $service_providers = include \ShopEngine::plugin_dir().'core/service-provider-manager.php';
190 - $method = 'init';
191 - foreach( $service_providers as $service_provider ){
192 -
193 - if(class_exists($service_provider) && method_exists($service_provider, $method)) {
194 - $instance = new $service_provider();
195 - $instance->$method();
196 - }
197 -
198 - }
199 -
200 - add_filter('script_loader_tag', [$this, 'filter_load_type'], 99, 3);
131 + (new \ShopEngine\Compatibility\Migrations\Temp_Migration())->init();
201 132 }
202 133
203 134
204 - // add async and defer attributes to enqueued scripts
205 - public function filter_load_type($tag, $handle, $src) {
206 -
207 - if(strpos($handle, '-async') !== false) {
208 - $tag = str_replace(' src', ' async="async" src', $tag);
209 - }
210 -
211 - if(strpos($handle, '-defer') !== false) {
212 - $tag = str_replace('<script ', '<script defer ', $tag);
213 - }
214 -
215 - return $tag;
216 - }
217 -
218 135 /**
219 136 * Public function shopengine_track_product_views
220 137 * Adding Product Views Count Meta
221 138 */
222 - public function shopengine_track_product_views() {
223 -
139 + public function shopengine_track_product_views($product_id) {
224 140 if(class_exists('WooCommerce') && !is_product()) {
225 141 return;
226 142 }
227 -
228 143 $product_id = get_the_id();
229 144
230 - $cookie_name = "shopengine_recent_viewed_product";
231 -
232 - if(isset($_COOKIE[$cookie_name])) {
233 -
234 - $cookie_ids = sanitize_text_field(wp_unslash($_COOKIE[$cookie_name]));
235 - $product_ids = explode(',', $cookie_ids);
236 -
237 - if(!is_array($product_ids)) {
238 - $product_ids = [$product_ids];
239 - }
240 -
241 - $product_ids = array_combine($product_ids, $product_ids);
242 - unset($product_ids[$product_id]);
243 - $product_ids[] = $product_id;
244 -
245 - $cookie_value = implode(',', $product_ids);
246 -
247 - } else {
248 - $cookie_value = $product_id;
249 - }
250 -
251 - setcookie($cookie_name, $cookie_value, strtotime('+30 days'), '/' );
252 -
253 145 $count_key = 'shopengine_product_views_count';
254 146 $count = get_post_meta($product_id, $count_key, true);
255 -
256 147 if($count == '') {
257 148 $count = 1;
258 149 delete_post_meta($product_id, $count_key);
259 150 add_post_meta($product_id, $count_key, '1');
@@ -268,16 +159,18 @@
268 159 * Include public function
269 160 *
270 161 * @since 1.0.0
271 162 */
272 - public function js_css_public() {
273 - wp_register_style('shopengine-public', \ShopEngine::plugin_url() . 'assets/css/shopengine-public.css', false, \ShopEngine::version());
163 + public function js_css_public() {
164 + wp_enqueue_style('shopengine-icon', \ShopEngine::plugin_url() . 'assets/css/shopengine-icon.css', false, \ShopEngine::version());
165 + wp_enqueue_style('shopengine-simple-scrollbar-css', \ShopEngine::plugin_url() . 'assets/css/simple-scrollbar.css', false, \ShopEngine::version());
166 + wp_enqueue_style('shopengine-public-css', \ShopEngine::plugin_url() . 'assets/css/public-style.css', false, \ShopEngine::version());
274 167
275 168 // Modal Stylesheet
276 - wp_register_style('shopengine-modal-styles', \ShopEngine::plugin_url() . 'assets/css/shopengine-modal.css', false, \ShopEngine::version());
169 + wp_register_style( 'shopengine-modal-styles', \ShopEngine::plugin_url() . 'assets/css/shopengine-modal.css', false, \ShopEngine::version() );
277 170
278 171 // Modal Script
279 - wp_register_script('shopengine-modal-script', \ShopEngine::plugin_url() . 'assets/js/shopengine-modal.js', ['jquery'], \ShopEngine::version(), true);
172 + wp_register_script( 'shopengine-modal-script', \ShopEngine::plugin_url() . 'assets/js/shopengine-modal.js', ['jquery'], \ShopEngine::version(), true );
280 173
281 174 wp_enqueue_script('shopengine-simple-scrollbar.js-js', \ShopEngine::plugin_url() . 'assets/js/simple-scrollbar.js', [], \ShopEngine::version(), true);
282 175 wp_enqueue_script('shopengine-filter-js', \ShopEngine::plugin_url() . 'assets/js/filter.js', [], \ShopEngine::version(), true);
283 176 wp_enqueue_script('shopengine-js', \ShopEngine::plugin_url() . 'assets/js/public.js', [], \ShopEngine::version(), true);
@@ -320,8 +213,12 @@
320 213
321 214
322 215 public function missing_woocommerce() {
323 216
217 + if(isset($_GET['activate'])) {
218 + unset($_GET['activate']);
219 + }
220 +
324 221 if(file_exists(WP_PLUGIN_DIR . '/woocommerce/woocommerce.php')) {
325 222
326 223 $btn['label'] = esc_html__('Activate WooCommerce', 'shopengine');
327 224 $btn['url'] = wp_nonce_url('plugins.php?action=activate&plugin=woocommerce/woocommerce.php&plugin_status=all&paged=1', 'activate-plugin_woocommerce/woocommerce.php');
@@ -345,8 +242,12 @@
345 242
346 243
347 244 public function missing_elementor() {
348 245
246 + if(isset($_GET['activate'])) {
247 + unset($_GET['activate']);
248 + }
249 +
349 250 if(file_exists(WP_PLUGIN_DIR . '/elementor/elementor.php')) {
350 251
351 252 $btn['label'] = esc_html__('Activate Elementor', 'shopengine');
352 253 $btn['url'] = wp_nonce_url('plugins.php?action=activate&plugin=elementor/elementor.php&plugin_status=all&paged=1', 'activate-plugin_elementor/elementor.php');
@@ -398,5 +299,6 @@
398 299 }
399 300
400 301 return self::$instance;
401 302 }
303 +
402 304 }