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

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