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

338 lines 12.6 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 // Custom Add To Cart Button
225 array(
226 'handle' => 'merchant-custom-addtocart-button',
227 'src' => 'assets/js/custom-addtocart-button.min.js',
228 'dep' => array(),
229 'in_footer' => true,
230 ),
231
232 // Carousel
233 array(
234 'handle' => 'merchant-carousel',
235 'src' => 'assets/js/carousel.min.js',
236 'dep' => array(),
237 'in_footer' => true,
238 ),
239
240 // Pagination
241 array(
242 'handle' => 'merchant-pagination',
243 'src' => 'assets/js/pagination.min.js',
244 'dep' => array(),
245 'in_footer' => true,
246 ),
247 );
248
249 foreach ( $scripts as $script ) {
250 wp_register_script( $script['handle'], MERCHANT_URI . $script['src'], $script['dep'], MERCHANT_VERSION, $script['in_footer'] );
251 }
252 }
253
254 /**
255 * Enqueue styles and scripts.
256 */
257 public function enqueue_styles_scripts() {
258
259 /**
260 * Hook 'merchant_enqueue_before_main_css_js'
261 *
262 * @since 1.0
263 */
264 do_action( 'merchant_enqueue_before_main_css_js' );
265
266 wp_enqueue_style( 'merchant', MERCHANT_URI . 'assets/css/merchant.min.css', array(), MERCHANT_VERSION );
267 wp_enqueue_script( 'merchant', MERCHANT_URI . 'assets/js/merchant.min.js', array( 'jquery' ), MERCHANT_VERSION, true );
268
269 $setting = array(
270 'nonce' => wp_create_nonce( 'merchant-nonce' ),
271 'ajax_url' => admin_url( 'admin-ajax.php' ),
272 );
273
274 // Scroll to Top Button
275 // TODO: Move this to the respective module class.
276 if ( Merchant_Modules::is_module_active( 'scroll-to-top-button' ) ) {
277 $setting['scroll_to_top'] = true;
278 }
279
280 // Animated Add to Cart
281 // TODO: Move this to the respective module class.
282 if ( Merchant_Modules::is_module_active( 'animated-add-to-cart' ) ) {
283 $trigger = Merchant_Admin_Options::get( 'animated-add-to-cart', 'trigger', 'on-mouse-hover' );
284
285 if ( 'on-page-load' === $trigger ) {
286 wp_enqueue_script( 'merchant-animated-add-to-cart', MERCHANT_URI . 'assets/js/modules/animated-add-to-cart.js', array( 'merchant' ), MERCHANT_VERSION, true );
287 }
288 }
289
290 // Auto External Links
291 // TODO: Move this to the respective module class.
292 if ( Merchant_Modules::is_module_active( 'auto-external-links' ) ) {
293 $setting['auto_external_links'] = true;
294 }
295
296 // Cookie Banner
297 if ( Merchant_Modules::is_module_active( 'cookie-banner' ) ) {
298 $setting['cookie_banner'] = true;
299 $setting['cookie_banner_duration'] = Merchant_Admin_Options::get( 'cookie-banner', 'cookie_duration', 365 );
300 }
301
302 // Real Time Search
303 // TODO: Move this to the respective module class.
304 if ( Merchant_Modules::is_module_active( 'real-time-search' ) ) {
305 $setting['ajax_search'] = true;
306 $setting['ajax_search_results_amounth_per_search'] = Merchant_Admin_Options::get( 'real-time-search', 'results_amounth_per_search', 15 );
307 $setting['ajax_search_results_order_by'] = Merchant_Admin_Options::get( 'real-time-search', 'results_order_by', 'title' );
308 $setting['ajax_search_results_order'] = Merchant_Admin_Options::get( 'real-time-search', 'results_order', 'asc' );
309 $setting['ajax_search_results_display_categories'] = Merchant_Admin_Options::get( 'real-time-search', 'display_categories', 0 );
310 $setting['ajax_search_results_enable_search_by_sku'] = Merchant_Admin_Options::get( 'real-time-search', 'enable_search_by_sku', 0 );
311 }
312
313 /**
314 * Hook 'merchant_enqueue_after_main_css_js'
315 *
316 * @since 1.0
317 */
318 do_action( 'merchant_enqueue_after_main_css_js' );
319
320 /**
321 * Hook 'merchant_localize_script'
322 *
323 * @since 1.0
324 */
325 $setting = apply_filters( 'merchant_localize_script', $setting );
326
327 wp_localize_script( 'merchant', 'merchant', array(
328 'general' => array(
329 'wooCurrencySymbol' => class_exists( 'Woocommerce' ) ? html_entity_decode( get_woocommerce_currency_symbol() ) : '',
330 ),
331 'setting' => $setting,
332 ) );
333 }
334 }
335
336 Merchant_Loader::instance();
337 }
338