PluginProbe
Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant / 1.8
Product Labels, Quick View, Buy Now, Pre-Orders, Frequently Bought Together & More for WooCommerce – Merchant v1.8
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, at inc/class-merchant-loader.php

338 lines 12.5 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
97 // Pro modules;
98 if ( ! defined( 'MERCHANT_PRO_VERSION' )
99 || defined( 'MERCHANT_PRO_VERSION' ) && (float) MERCHANT_PRO_VERSION > 1.2 ) {
100 require_once MERCHANT_DIR . 'inc/modules/cart-reserved-timer/class-cart-reserved-timer.php';
101 require_once MERCHANT_DIR . 'inc/modules/buy-x-get-y/class-buy-x-get-y.php';
102 require_once MERCHANT_DIR . 'inc/modules/advanced-reviews/class-advanced-reviews.php';
103 require_once MERCHANT_DIR . 'inc/modules/checkout/class-checkout.php';
104 require_once MERCHANT_DIR . 'inc/modules/countdown-timer/class-countdown-timer.php';
105 require_once MERCHANT_DIR . 'inc/modules/floating-mini-cart/class-floating-mini-cart.php';
106 require_once MERCHANT_DIR . 'inc/modules/free-gifts/class-free-gifts.php';
107 require_once MERCHANT_DIR . 'inc/modules/frequently-bought-together/class-frequently-bought-together.php';
108 require_once MERCHANT_DIR . 'inc/modules/login-popup/class-login-popup.php';
109 require_once MERCHANT_DIR . 'inc/modules/product-audio/class-product-audio.php';
110 require_once MERCHANT_DIR . 'inc/modules/product-brand-image/class-product-brand-image.php';
111 require_once MERCHANT_DIR . 'inc/modules/product-video/class-product-video.php';
112 require_once MERCHANT_DIR . 'inc/modules/reasons-to-buy/class-reasons-to-buy.php';
113 require_once MERCHANT_DIR . 'inc/modules/recently-viewed-products/class-recently-viewed-products.php';
114 require_once MERCHANT_DIR . 'inc/modules/size-chart/class-size-chart.php';
115 require_once MERCHANT_DIR . 'inc/modules/spending-goal/class-spending-goal.php';
116 require_once MERCHANT_DIR . 'inc/modules/sticky-add-to-cart/class-sticky-add-to-cart.php';
117 require_once MERCHANT_DIR . 'inc/modules/stock-scarcity/class-stock-scarcity.php';
118 require_once MERCHANT_DIR . 'inc/modules/volume-discounts/class-volume-discounts.php';
119 require_once MERCHANT_DIR . 'inc/modules/wait-list/class-wait-list.php';
120 require_once MERCHANT_DIR . 'inc/modules/wishlist/class-wishlist.php';
121 require_once MERCHANT_DIR . 'inc/modules/product-swatches/class-product-swatches.php';
122 require_once MERCHANT_DIR . 'inc/modules/side-cart/class-side-cart.php';
123 require_once MERCHANT_DIR . 'inc/modules/quick-social-links/class-quick-social-links.php';
124 require_once MERCHANT_DIR . 'inc/modules/product-navigation-links/class-product-navigation-links.php';
125 }
126
127 // Compatibility Layer
128 require_once MERCHANT_DIR . 'inc/compatibility/class-merchant-botiga-theme.php';
129 require_once MERCHANT_DIR . 'inc/compatibility/class-merchant-kadence-theme.php';
130 require_once MERCHANT_DIR . 'inc/compatibility/class-merchant-oceanwp-theme.php';
131 require_once MERCHANT_DIR . 'inc/compatibility/class-merchant-twenty-twenty-four-theme.php';
132
133 /**
134 * Hook 'merchant_admin_after_include_modules_classes'.
135 *
136 * @since 1.0
137 */
138 do_action( 'merchant_admin_after_include_modules_classes' );
139 }
140
141 /**
142 * Add to body class.
143 */
144 public function add_body_class( $classes ) {
145 $theme = wp_get_theme();
146 $theme = ( get_template_directory() !== get_stylesheet_directory() && $theme->parent() ) ? $theme->parent() : $theme;
147
148 $classes[] = 'merchant-theme-' . strtolower( esc_attr( $theme->name ) );
149
150 return $classes;
151 }
152
153 /**
154 * Register scripts.
155 * Scripts that might be used by multiple modules should be registered here.
156 *
157 */
158 public function register_global_js_and_css() {
159 // Register styles.
160 $styles = array(
161
162 // Grid.
163 array(
164 'handle' => 'merchant-grid',
165 'src' => 'assets/css/grid.min.css',
166 'dep' => array(),
167 'ver' => MERCHANT_VERSION,
168 'media' => 'all'
169 ),
170
171 // Utilities.
172 array(
173 'handle' => 'merchant-utilities',
174 'src' => 'assets/css/utilities.min.css',
175 'dep' => array(),
176 'ver' => MERCHANT_VERSION,
177 'media' => 'all'
178 ),
179
180 // Carousel.
181 array(
182 'handle' => 'merchant-carousel',
183 'src' => 'assets/css/carousel.min.css',
184 'dep' => array(),
185 'ver' => MERCHANT_VERSION,
186 'media' => 'all'
187 ),
188
189 // Pagination.
190 array(
191 'handle' => 'merchant-pagination',
192 'src' => 'assets/css/pagination.min.css',
193 'dep' => array(),
194 'ver' => MERCHANT_VERSION,
195 'media' => 'all'
196 )
197
198 );
199
200 foreach ( $styles as $style ) {
201 wp_register_style( $style['handle'], MERCHANT_URI . $style['src'], $style['dep'], $style['ver'], $style['media'] );
202 }
203
204 // Register scripts.
205 $scripts = array(
206
207 // Scroll Direction
208 array(
209 'handle' => 'merchant-scroll-direction',
210 'src' => 'assets/js/scroll-direction.min.js',
211 'dep' => array(),
212 'in_footer' => true
213 ),
214
215 // Toggle Class
216 array(
217 'handle' => 'merchant-toggle-class',
218 'src' => 'assets/js/toggle-class.min.js',
219 'dep' => array(),
220 'in_footer' => true
221 ),
222
223 // Custom Add To Cart Button
224 array(
225 'handle' => 'merchant-custom-addtocart-button',
226 'src' => 'assets/js/custom-addtocart-button.min.js',
227 'dep' => array(),
228 'in_footer' => true
229 ),
230
231 // Carousel
232 array(
233 'handle' => 'merchant-carousel',
234 'src' => 'assets/js/carousel.min.js',
235 'dep' => array(),
236 'in_footer' => true
237 ),
238
239 // Pagination
240 array(
241 'handle' => 'merchant-pagination',
242 'src' => 'assets/js/pagination.min.js',
243 'dep' => array(),
244 'in_footer' => true
245 )
246 );
247
248 foreach ( $scripts as $script ) {
249 wp_register_script( $script['handle'], MERCHANT_URI . $script['src'], $script['dep'], MERCHANT_VERSION, $script['in_footer'] );
250 }
251 }
252
253 /**
254 * Enqueue styles and scripts.
255 */
256 public function enqueue_styles_scripts() {
257
258 /**
259 * Hook 'merchant_enqueue_before_main_css_js'
260 *
261 * @since 1.0
262 */
263 do_action( 'merchant_enqueue_before_main_css_js' );
264
265 wp_enqueue_style( 'merchant', MERCHANT_URI . 'assets/css/merchant.min.css', array(), MERCHANT_VERSION );
266 wp_enqueue_script( 'merchant', MERCHANT_URI . 'assets/js/merchant.min.js', array( 'jquery' ), MERCHANT_VERSION, true );
267
268 $setting = array(
269 'nonce' => wp_create_nonce( 'merchant-nonce' ),
270 'ajax_url' => admin_url( 'admin-ajax.php' ),
271 );
272
273 // Scroll to Top Button
274 // TODO: Move this to the respective module class.
275 if ( Merchant_Modules::is_module_active( 'scroll-to-top-button' ) ) {
276 $setting['scroll_to_top'] = true;
277 }
278
279 // Animated Add to Cart
280 // TODO: Move this to the respective module class.
281 if ( Merchant_Modules::is_module_active( 'animated-add-to-cart' ) ) {
282 $trigger = Merchant_Admin_Options::get( 'animated-add-to-cart', 'trigger', 'on-mouse-hover' );
283
284 if ( 'on-page-load' === $trigger ) {
285 wp_enqueue_script( 'merchant-animated-add-to-cart', MERCHANT_URI . 'assets/js/modules/animated-add-to-cart.js', array( 'merchant' ), MERCHANT_VERSION, true );
286 }
287 }
288
289 // Auto External Links
290 // TODO: Move this to the respective module class.
291 if ( Merchant_Modules::is_module_active( 'auto-external-links' ) ) {
292 $setting['auto_external_links'] = true;
293 }
294
295 // Cookie Banner
296 if ( Merchant_Modules::is_module_active( 'cookie-banner' ) ) {
297 $setting['cookie_banner'] = true;
298 $setting['cookie_banner_duration'] = Merchant_Admin_Options::get( 'cookie-banner', 'cookie_duration', 365 );
299 }
300
301 // Real Time Search
302 // TODO: Move this to the respective module class.
303 if ( Merchant_Modules::is_module_active( 'real-time-search' ) ) {
304 $setting['ajax_search'] = true;
305 $setting['ajax_search_results_amounth_per_search'] = Merchant_Admin_Options::get( 'real-time-search', 'results_amounth_per_search', 15 );
306 $setting['ajax_search_results_order_by'] = Merchant_Admin_Options::get( 'real-time-search', 'results_order_by', 'title' );
307 $setting['ajax_search_results_order'] = Merchant_Admin_Options::get( 'real-time-search', 'results_order', 'asc' );
308 $setting['ajax_search_results_display_categories'] = Merchant_Admin_Options::get( 'real-time-search', 'display_categories', 0 );
309 $setting['ajax_search_results_enable_search_by_sku'] = Merchant_Admin_Options::get( 'real-time-search', 'enable_search_by_sku', 0 );
310 }
311
312 /**
313 * Hook 'merchant_enqueue_after_main_css_js'
314 *
315 * @since 1.0
316 */
317 do_action( 'merchant_enqueue_after_main_css_js' );
318
319 /**
320 * Hook 'merchant_localize_script'
321 *
322 * @since 1.0
323 */
324 $setting = apply_filters( 'merchant_localize_script', $setting );
325
326 wp_localize_script( 'merchant', 'merchant', array(
327 'general' => array(
328 'wooCurrencySymbol' => class_exists( 'Woocommerce' ) ? html_entity_decode( get_woocommerce_currency_symbol() ) : ''
329 ),
330 'setting' => $setting
331 ) );
332 }
333
334 }
335
336 Merchant_Loader::instance();
337 }
338