PluginProbe
Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant / 1.8.2
Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant v1.8.2
2.3.2 2.3.1 2.3.0 2.2.8 2.2.7 trunk 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.10.5 1.11.0 1.11.1 1.11.2 1.6 1.7 1.8 1.8.1 1.8.2 1.8.3 1.9.0 1.9.1 1.9.10 1.9.11 All 60 releases
merchant / inc / class-merchant-loader.php

class-merchant-loader.php in Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant 1.8.2, at inc/class-merchant-loader.php

346 lines 12.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Merchant_Loader Class.
4 */
5
6 if ( ! defined( 'ABSPATH' ) ) {
7 exit; // Exit if accessed directly
8 }
9
10 if ( ! class_exists( 'Merchant_Loader' ) ) {
11 class Merchant_Loader {
12
13 /**
14 * The single class instance.
15 */
16 private static $instance = null;
17
18 /**
19 * Instance.
20 */
21 public static function instance() {
22 if ( is_null( self::$instance ) ) {
23 self::$instance = new self();
24 }
25
26 return self::$instance;
27 }
28
29 /**
30 * Constructor.
31 */
32 public function __construct() {
33 // Includes.
34 $this->includes();
35
36 // Register scripts.
37 add_action( 'wp_enqueue_scripts', array( $this, 'register_global_js_and_css' ) );
38
39 // Enqueue scripts.
40 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles_scripts' ) );
41
42 // Add identifier to body class.
43 add_filter( 'body_class', array( $this, 'add_body_class' ) );
44 }
45
46 /**
47 * Include required classes.
48 */
49 public function includes() {
50 // Essential functions.
51 require_once MERCHANT_DIR . 'inc/functions.php';
52
53 // Helpers.
54 require_once MERCHANT_DIR . 'inc/helpers.php';
55
56 // Multi Language.
57 require_once MERCHANT_DIR . 'inc/MultiLang/interface-language-strategy.php';
58 require_once MERCHANT_DIR . 'inc/MultiLang/class-merchant-no-plugin-support.php';
59 require_once MERCHANT_DIR . 'inc/MultiLang/class-merchant-polylang-support.php';
60 require_once MERCHANT_DIR . 'inc/MultiLang/class-merchant-wpml-support.php';
61 require_once MERCHANT_DIR . 'inc/MultiLang/class-merchant-translator.php';
62
63 // Ajax callbacks.
64 require_once MERCHANT_DIR . 'inc/classes/class-merchant-ajax-callbacks.php';
65
66 // Core classes.
67 require_once MERCHANT_DIR . 'inc/classes/class-merchant-option.php';
68 require_once MERCHANT_DIR . 'inc/classes/class-merchant-modules.php';
69 require_once MERCHANT_DIR . 'inc/classes/class-merchant-custom-css.php';
70 require_once MERCHANT_DIR . 'inc/classes/class-merchant-svg-icons.php';
71
72 // Metabox
73 require_once MERCHANT_DIR . 'inc/classes/class-merchant-metabox.php';
74
75 // The main class for adding modules.
76 require_once MERCHANT_DIR . 'inc/modules/class-add-module.php';
77
78 // Modules.
79 require_once MERCHANT_DIR . 'inc/modules/global-settings/global-settings.php';
80 require_once MERCHANT_DIR . 'inc/modules/buy-now/class-buy-now.php';
81 require_once MERCHANT_DIR . 'inc/modules/animated-add-to-cart/class-animated-add-to-cart.php';
82 require_once MERCHANT_DIR . 'inc/modules/quick-view/class-quick-view.php';
83 require_once MERCHANT_DIR . 'inc/modules/product-labels/class-product-labels.php';
84 require_once MERCHANT_DIR . 'inc/modules/add-to-cart-text/class-add-to-cart-text.php';
85 require_once MERCHANT_DIR . 'inc/modules/pre-orders/class-pre-orders.php';
86 require_once MERCHANT_DIR . 'inc/modules/cart-count-favicon/class-cart-count-favicon.php';
87 require_once MERCHANT_DIR . 'inc/modules/inactive-tab-message/class-inactive-tab-message.php';
88 require_once MERCHANT_DIR . 'inc/modules/payment-logos/class-payment-logos.php';
89 require_once MERCHANT_DIR . 'inc/modules/trust-badges/class-trust-badges.php';
90 require_once MERCHANT_DIR . 'inc/modules/auto-external-links/class-auto-external-links.php';
91 require_once MERCHANT_DIR . 'inc/modules/real-time-search/class-real-time-search.php';
92 require_once MERCHANT_DIR . 'inc/modules/code-snippets/class-code-snippets.php';
93 require_once MERCHANT_DIR . 'inc/modules/scroll-to-top-button/class-scroll-to-top-button.php';
94 require_once MERCHANT_DIR . 'inc/modules/agree-to-terms-checkbox/class-agree-to-terms-checkbox.php';
95 require_once MERCHANT_DIR . 'inc/modules/cookie-banner/class-cookie-banner.php';
96 require_once MERCHANT_DIR . 'inc/modules/address-autocomplete/class-address-autocomplete.php';
97
98 // Pro modules;
99 if ( ! defined( 'MERCHANT_PRO_VERSION' )
100 || defined( 'MERCHANT_PRO_VERSION' ) && (float) MERCHANT_PRO_VERSION > 1.2 ) {
101 require_once MERCHANT_DIR . 'inc/modules/cart-reserved-timer/class-cart-reserved-timer.php';
102 require_once MERCHANT_DIR . 'inc/modules/buy-x-get-y/class-buy-x-get-y.php';
103 require_once MERCHANT_DIR . 'inc/modules/advanced-reviews/class-advanced-reviews.php';
104 require_once MERCHANT_DIR . 'inc/modules/checkout/class-checkout.php';
105 require_once MERCHANT_DIR . 'inc/modules/countdown-timer/class-countdown-timer.php';
106 require_once MERCHANT_DIR . 'inc/modules/floating-mini-cart/class-floating-mini-cart.php';
107 require_once MERCHANT_DIR . 'inc/modules/free-gifts/class-free-gifts.php';
108 require_once MERCHANT_DIR . 'inc/modules/frequently-bought-together/class-frequently-bought-together.php';
109 require_once MERCHANT_DIR . 'inc/modules/login-popup/class-login-popup.php';
110 require_once MERCHANT_DIR . 'inc/modules/product-audio/class-product-audio.php';
111 require_once MERCHANT_DIR . 'inc/modules/product-brand-image/class-product-brand-image.php';
112 require_once MERCHANT_DIR . 'inc/modules/product-video/class-product-video.php';
113 require_once MERCHANT_DIR . 'inc/modules/reasons-to-buy/class-reasons-to-buy.php';
114 require_once MERCHANT_DIR . 'inc/modules/recently-viewed-products/class-recently-viewed-products.php';
115 require_once MERCHANT_DIR . 'inc/modules/size-chart/class-size-chart.php';
116 require_once MERCHANT_DIR . 'inc/modules/spending-goal/class-spending-goal.php';
117 require_once MERCHANT_DIR . 'inc/modules/sticky-add-to-cart/class-sticky-add-to-cart.php';
118 require_once MERCHANT_DIR . 'inc/modules/stock-scarcity/class-stock-scarcity.php';
119 require_once MERCHANT_DIR . 'inc/modules/volume-discounts/class-volume-discounts.php';
120 require_once MERCHANT_DIR . 'inc/modules/wait-list/class-wait-list.php';
121 require_once MERCHANT_DIR . 'inc/modules/wishlist/class-wishlist.php';
122 require_once MERCHANT_DIR . 'inc/modules/product-swatches/class-product-swatches.php';
123 require_once MERCHANT_DIR . 'inc/modules/side-cart/class-side-cart.php';
124 require_once MERCHANT_DIR . 'inc/modules/quick-social-links/class-quick-social-links.php';
125 require_once MERCHANT_DIR . 'inc/modules/product-navigation-links/class-product-navigation-links.php';
126 }
127
128 // Compatibility Layer
129 require_once MERCHANT_DIR . 'inc/compatibility/class-merchant-botiga-theme.php';
130 require_once MERCHANT_DIR . 'inc/compatibility/class-merchant-kadence-theme.php';
131 require_once MERCHANT_DIR . 'inc/compatibility/class-merchant-oceanwp-theme.php';
132 require_once MERCHANT_DIR . 'inc/compatibility/class-merchant-twenty-twenty-four-theme.php';
133
134 /**
135 * Hook 'merchant_admin_after_include_modules_classes'.
136 *
137 * @since 1.0
138 */
139 do_action( 'merchant_admin_after_include_modules_classes' );
140 }
141
142 /**
143 * Add to body class.
144 */
145 public function add_body_class( $classes ) {
146 $theme = wp_get_theme();
147 $theme = ( get_template_directory() !== get_stylesheet_directory() && $theme->parent() ) ? $theme->parent() : $theme;
148
149 $classes[] = 'merchant-theme-' . strtolower( esc_attr( $theme->name ) );
150
151 return $classes;
152 }
153
154 /**
155 * Register scripts.
156 * Scripts that might be used by multiple modules should be registered here.
157 *
158 */
159 public function register_global_js_and_css() {
160 // Register styles.
161 $styles = array(
162
163 // Grid.
164 array(
165 'handle' => 'merchant-grid',
166 'src' => 'assets/css/grid.min.css',
167 'dep' => array(),
168 'ver' => MERCHANT_VERSION,
169 'media' => 'all',
170 ),
171
172 // Utilities.
173 array(
174 'handle' => 'merchant-utilities',
175 'src' => 'assets/css/utilities.min.css',
176 'dep' => array(),
177 'ver' => MERCHANT_VERSION,
178 'media' => 'all',
179 ),
180
181 // Carousel.
182 array(
183 'handle' => 'merchant-carousel',
184 'src' => 'assets/css/carousel.min.css',
185 'dep' => array(),
186 'ver' => MERCHANT_VERSION,
187 'media' => 'all',
188 ),
189
190 // Pagination.
191 array(
192 'handle' => 'merchant-pagination',
193 'src' => 'assets/css/pagination.min.css',
194 'dep' => array(),
195 'ver' => MERCHANT_VERSION,
196 'media' => 'all',
197 ),
198
199 );
200
201 foreach ( $styles as $style ) {
202 wp_register_style( $style['handle'], MERCHANT_URI . $style['src'], $style['dep'], $style['ver'], $style['media'] );
203 }
204
205 // Register scripts.
206 $scripts = array(
207
208 // Scroll Direction
209 array(
210 'handle' => 'merchant-scroll-direction',
211 'src' => 'assets/js/scroll-direction.min.js',
212 'dep' => array(),
213 'in_footer' => true,
214 ),
215
216 // Toggle Class
217 array(
218 'handle' => 'merchant-toggle-class',
219 'src' => 'assets/js/toggle-class.min.js',
220 'dep' => array(),
221 'in_footer' => true,
222 ),
223
224 // Scroll To
225 array(
226 'handle' => 'merchant-scroll-to',
227 'src' => 'assets/js/scroll-to.min.js',
228 'dep' => array(),
229 'in_footer' => true,
230 ),
231
232 // Custom Add To Cart Button
233 array(
234 'handle' => 'merchant-custom-addtocart-button',
235 'src' => 'assets/js/custom-addtocart-button.min.js',
236 'dep' => array(),
237 'in_footer' => true,
238 ),
239
240 // Carousel
241 array(
242 'handle' => 'merchant-carousel',
243 'src' => 'assets/js/carousel.min.js',
244 'dep' => array(),
245 'in_footer' => true,
246 ),
247
248 // Pagination
249 array(
250 'handle' => 'merchant-pagination',
251 'src' => 'assets/js/pagination.min.js',
252 'dep' => array(),
253 'in_footer' => true,
254 ),
255 );
256
257 foreach ( $scripts as $script ) {
258 wp_register_script( $script['handle'], MERCHANT_URI . $script['src'], $script['dep'], MERCHANT_VERSION, $script['in_footer'] );
259 }
260 }
261
262 /**
263 * Enqueue styles and scripts.
264 */
265 public function enqueue_styles_scripts() {
266
267 /**
268 * Hook 'merchant_enqueue_before_main_css_js'
269 *
270 * @since 1.0
271 */
272 do_action( 'merchant_enqueue_before_main_css_js' );
273
274 wp_enqueue_style( 'merchant', MERCHANT_URI . 'assets/css/merchant.min.css', array(), MERCHANT_VERSION );
275 wp_enqueue_script( 'merchant', MERCHANT_URI . 'assets/js/merchant.min.js', array( 'jquery' ), MERCHANT_VERSION, true );
276
277 $setting = array(
278 'nonce' => wp_create_nonce( 'merchant-nonce' ),
279 'ajax_url' => admin_url( 'admin-ajax.php' ),
280 );
281
282 // Scroll to Top Button
283 // TODO: Move this to the respective module class.
284 if ( Merchant_Modules::is_module_active( 'scroll-to-top-button' ) ) {
285 $setting['scroll_to_top'] = true;
286 }
287
288 // Animated Add to Cart
289 // TODO: Move this to the respective module class.
290 if ( Merchant_Modules::is_module_active( 'animated-add-to-cart' ) ) {
291 $trigger = Merchant_Admin_Options::get( 'animated-add-to-cart', 'trigger', 'on-mouse-hover' );
292
293 if ( 'on-page-load' === $trigger ) {
294 wp_enqueue_script( 'merchant-animated-add-to-cart', MERCHANT_URI . 'assets/js/modules/animated-add-to-cart.js', array( 'merchant' ), MERCHANT_VERSION, true );
295 }
296 }
297
298 // Auto External Links
299 // TODO: Move this to the respective module class.
300 if ( Merchant_Modules::is_module_active( 'auto-external-links' ) ) {
301 $setting['auto_external_links'] = true;
302 }
303
304 // Cookie Banner
305 if ( Merchant_Modules::is_module_active( 'cookie-banner' ) ) {
306 $setting['cookie_banner'] = true;
307 $setting['cookie_banner_duration'] = Merchant_Admin_Options::get( 'cookie-banner', 'cookie_duration', 365 );
308 }
309
310 // Real Time Search
311 // TODO: Move this to the respective module class.
312 if ( Merchant_Modules::is_module_active( 'real-time-search' ) ) {
313 $setting['ajax_search'] = true;
314 $setting['ajax_search_results_amounth_per_search'] = Merchant_Admin_Options::get( 'real-time-search', 'results_amounth_per_search', 15 );
315 $setting['ajax_search_results_order_by'] = Merchant_Admin_Options::get( 'real-time-search', 'results_order_by', 'title' );
316 $setting['ajax_search_results_order'] = Merchant_Admin_Options::get( 'real-time-search', 'results_order', 'asc' );
317 $setting['ajax_search_results_display_categories'] = Merchant_Admin_Options::get( 'real-time-search', 'display_categories', 0 );
318 $setting['ajax_search_results_enable_search_by_sku'] = Merchant_Admin_Options::get( 'real-time-search', 'enable_search_by_sku', 0 );
319 }
320
321 /**
322 * Hook 'merchant_enqueue_after_main_css_js'
323 *
324 * @since 1.0
325 */
326 do_action( 'merchant_enqueue_after_main_css_js' );
327
328 /**
329 * Hook 'merchant_localize_script'
330 *
331 * @since 1.0
332 */
333 $setting = apply_filters( 'merchant_localize_script', $setting );
334
335 wp_localize_script( 'merchant', 'merchant', array(
336 'general' => array(
337 'wooCurrencySymbol' => class_exists( 'Woocommerce' ) ? html_entity_decode( get_woocommerce_currency_symbol() ) : '',
338 ),
339 'setting' => $setting,
340 ) );
341 }
342 }
343
344 Merchant_Loader::instance();
345 }
346