Passed
Push — master ( 886f4f...0bd761 )
by Fernando
02:46
created

woocommerce.php ➔ lsx_customizer_wc_controls()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 21
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 14
nc 1
nop 1
dl 0
loc 21
rs 9.3142
c 0
b 0
f 0
1
<?php
2
/**
3
 * LSX functions and definitions - WooCommerce.
4
 *
5
 * @package    lsx
6
 * @subpackage layout
7
 */
8
9
if ( ! defined( 'ABSPATH' ) ) {
10
	exit;
11
}
12
13
if ( ! function_exists( 'lsx_wc_support' ) ) :
14
15
	/**
16
	 * WooCommerce support.
17
	 *
18
	 * @package    lsx
19
	 * @subpackage woocommerce
20
	 */
21
	function lsx_wc_support() {
22
		add_theme_support( 'woocommerce' );
23
	}
24
25
	add_action( 'after_setup_theme', 'lsx_wc_support' );
26
27
endif;
28
29
if ( ! function_exists( 'lsx_wc_scripts_add_styles' ) ) :
30
31
	/**
32
	 * WooCommerce enqueue styles.
33
	 *
34
	 * @package    lsx
35
	 * @subpackage woocommerce
36
	 */
37
	function lsx_wc_scripts_add_styles() {
38
		wp_enqueue_style( 'woocommerce-lsx', get_template_directory_uri() . '/assets/css/woocommerce.css', array( 'lsx_main' ), LSX_VERSION );
39
		wp_style_add_data( 'woocommerce-lsx', 'rtl', 'replace' );
40
41
		// Remove select2 added by WooCommerce
42
43
		if ( ! is_admin() ) {
44
			wp_dequeue_style( 'select2' );
45
			wp_deregister_style( 'select2' );
46
47
			wp_dequeue_script( 'select2' );
48
			//wp_deregister_script( 'select2' );
0 ignored issues
show
Unused Code Comprehensibility introduced by
58% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
49
		}
50
	}
51
52
	add_action( 'wp_enqueue_scripts', 'lsx_wc_scripts_add_styles' );
53
54
endif;
55
56
if ( ! function_exists( 'lsx_wc_form_field_args' ) ) :
57
58
	/**
59
	 * WooCommerce form fields.
60
	 *
61
	 * @package    lsx
62
	 * @subpackage woocommerce
63
	 */
64
	function lsx_wc_form_field_args( $args, $key, $value ) {
0 ignored issues
show
Unused Code introduced by
The parameter $key is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $value is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
65
		$args['input_class'][] = 'form-control';
66
67
		return $args;
68
	}
69
70
	add_action( 'woocommerce_form_field_args', 'lsx_wc_form_field_args', 10, 3 );
71
72
endif;
73
74
if ( ! function_exists( 'lsx_wc_theme_wrapper_start' ) ) :
75
76
	/**
77
	 * WooCommerce wrapper start.
78
	 *
79
	 * @package    lsx
80
	 * @subpackage woocommerce
81
	 */
82
	function lsx_wc_theme_wrapper_start() {
83
		lsx_content_wrap_before();
84
		echo '<div id="primary" class="content-area ' . esc_attr( lsx_main_class() ) . '">';
85
		lsx_content_before();
86
		echo '<main id="main" class="site-main" role="main">';
87
		lsx_content_top();
88
	}
89
90
	remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 );
91
	add_action( 'woocommerce_before_main_content', 'lsx_wc_theme_wrapper_start' );
92
93
endif;
94
95
if ( ! function_exists( 'lsx_wc_theme_wrapper_end' ) ) :
96
97
	/**
98
	 * WooCommerce wrapper end.
99
	 *
100
	 * @package    lsx
101
	 * @subpackage woocommerce
102
	 */
103
	function lsx_wc_theme_wrapper_end() {
104
		lsx_content_bottom();
105
		echo '</div>';
106
		lsx_content_after();
107
		echo '</div>';
108
		lsx_content_wrap_after();
109
	}
110
111
	remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10 );
112
	add_action( 'woocommerce_after_main_content', 'lsx_wc_theme_wrapper_end' );
113
114
endif;
115
116
if ( ! function_exists( 'lsx_wc_disable_lsx_banner_plugin' ) ) :
117
118
	/**
119
	 * Disable LSX Banners plugin in some WC pages.
120
	 *
121
	 * @package    lsx
122
	 * @subpackage woocommerce
123
	 */
124
	function lsx_wc_disable_lsx_banner_plugin( $disabled ) {
125
		if ( is_cart() || is_checkout() || is_account_page() ) {
126
			$disabled = true;
127
		}
128
129
		return $disabled;
130
	}
131
132
	add_filter( 'lsx_banner_plugin_disable', 'lsx_wc_disable_lsx_banner_plugin' );
133
134
endif;
135
136
if ( ! function_exists( 'lsx_wc_disable_lsx_banner' ) ) :
137
138
	/**
139
	 * Disable LSX Banners banner in some WC pages.
140
	 *
141
	 * @package    lsx
142
	 * @subpackage woocommerce
143
	 */
144
	function lsx_wc_disable_lsx_banner( $disabled ) {
145
		if ( is_shop() || is_product_category() || is_product_tag() || is_product() ) {
146
			$disabled = true;
147
		}
148
149
		return $disabled;
150
	}
151
152
	add_filter( 'lsx_banner_disable', 'lsx_wc_disable_lsx_banner' );
153
154
endif;
155
156
if ( ! function_exists( 'lsx_wc_add_cart' ) ) :
157
158
	/**
159
	 * Adds WC cart to the header.
160
	 *
161
	 * @package    lsx
162
	 * @subpackage template-tags
163
	 */
164
	function lsx_wc_add_cart( $items, $args ) {
165
		if ( 'primary' === $args->theme_location ) {
166
			$customizer_option  = get_theme_mod( 'lsx_header_wc_cart', false );
167
168
			if ( ! empty( $customizer_option ) ) {
169
				ob_start();
170
				the_widget( 'WC_Widget_Cart', 'title=' );
171
				$widget = ob_get_clean();
172
173
				if ( is_cart() ) {
174
					$class = 'current-menu-item';
175
				} else {
176
					$class = '';
177
				}
178
179
				$item = '<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children dropdown lsx-wc-cart-menu-item ' . $class . '">' .
180
							'<a title="' . esc_attr__( 'View your shopping cart', 'lsx' ) . '" href="' . esc_url( wc_get_cart_url() ) . '" data-toggle="dropdown" class="dropdown-toggle" aria-haspopup="true">' .
181
								/* Translators: %s: items quantity */
182
								'<span class="lsx-wc-cart-amount">' . wp_kses_data( WC()->cart->get_cart_subtotal() ) . '</span> <span class="lsx-wc-cart-count">' . wp_kses_data( sprintf( _n( '%d item', '%d items', WC()->cart->get_cart_contents_count(), 'lsx' ), WC()->cart->get_cart_contents_count() ) ) . '</span>' .
183
							'</a>' .
184
							'<ul role="menu" class=" dropdown-menu lsx-wc-cart-sub-menu">' .
185
								'<li>' .
186
									'<div class="lsx-wc-cart-dropdown">' . $widget . '</div>' .
187
								'</li>' .
188
							'</ul>' .
189
						'</li>';
190
191
				$items .= $item;
192
			}
193
		}
194
195
		return $items;
196
	}
197
198
	add_filter( 'wp_nav_menu_items', 'lsx_wc_add_cart', 10, 2 );
199
200
endif;
201
202
if ( ! function_exists( 'lsx_wc_products_widget_wrapper_before' ) ) :
203
204
	/**
205
	 * Change WC products widget wrapper (before).
206
	 *
207
	 * @package    lsx
208
	 * @subpackage woocommerce
209
	 */
210
	function lsx_wc_products_widget_wrapper_before( $html ) {
0 ignored issues
show
Unused Code introduced by
The parameter $html is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
211
		$html = '<div class="lsx-woocommerce-slider lsx-woocommerce-shortcode">';
212
		return $html;
213
	}
214
215
	add_filter( 'woocommerce_before_widget_product_list', 'lsx_wc_products_widget_wrapper_before', 15 );
216
217
endif;
218
219
if ( ! function_exists( 'lsx_wc_products_widget_wrapper_after' ) ) :
220
221
	/**
222
	 * Change WC products widget wrapper (after).
223
	 *
224
	 * @package    lsx
225
	 * @subpackage woocommerce
226
	 */
227
	function lsx_wc_products_widget_wrapper_after( $html ) {
0 ignored issues
show
Unused Code introduced by
The parameter $html is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
228
		$html = '</div>';
229
		return $html;
230
	}
231
232
	add_filter( 'woocommerce_after_widget_product_list', 'lsx_wc_products_widget_wrapper_after', 15 );
233
234
endif;
235
236
if ( ! function_exists( 'lsx_wc_reviews_widget_override' ) ) :
237
238
	/**
239
	 * Override WC ewviews widget.
240
	 *
241
	 * @package    lsx
242
	 * @subpackage woocommerce
243
	 */
244
	function lsx_wc_reviews_widget_override() {
245
		if ( class_exists( 'WC_Widget_Recent_Reviews' ) ) {
246
			unregister_widget( 'WC_Widget_Recent_Reviews' );
247
			require get_template_directory() . '/includes/classes/class-lsx-wc-widget-recent-reviews.php';
248
			register_widget( 'LSX_WC_Widget_Recent_Reviews' );
249
		}
250
	}
251
252
	add_action( 'widgets_init', 'lsx_wc_reviews_widget_override', 15 );
253
254
endif;
255
256
if ( ! function_exists( 'lsx_wc_change_price_html' ) ) :
257
258
	/**
259
	 * Change WC ZERO price to "free".
260
	 *
261
	 * @package    lsx
262
	 * @subpackage woocommerce
263
	 */
264
	function lsx_wc_change_price_html( $price, $product ) {
265
		if ( empty( $product->get_price() ) ) {
266
			if ( $product->is_on_sale() && $product->get_regular_price() ) {
267
				$regular_price = wc_get_price_to_display( $product, array(
268
					'qty' => 1,
269
					'price' => $product->get_regular_price(),
270
				) );
271
272
				$price = wc_format_price_range( $regular_price, esc_html__( 'Free!', 'lsx' ) );
273
			} else {
274
				$price = '<span class="amount">' . esc_html__( 'Free!', 'lsx' ) . '</span>';
275
			}
276
		}
277
278
		return $price;
279
	}
280
281
	add_filter( 'woocommerce_get_price_html', 'lsx_wc_change_price_html', 15, 2 );
282
283
endif;
284
285
if ( ! function_exists( 'lsx_wc_cart_link_fragment' ) ) :
286
287
	/**
288
	 * Cart Fragments.
289
	 * Ensure cart contents update when products are added to the cart via AJAX.
290
	 *
291
	 * @package    lsx
292
	 * @subpackage woocommerce
293
	 */
294
	function lsx_wc_cart_link_fragment( $fragments ) {
295
		global $woocommerce;
296
297
		ob_start();
298
		lsx_wc_cart_link();
299
		$fragments['li.lsx-wc-cart-menu-item > a'] = ob_get_clean();
300
301
		return $fragments;
302
	}
303
304
endif;
305
306
if ( ! function_exists( 'lsx_wc_cart_link' ) ) :
307
308
	/**
309
	 * Cart Link.
310
	 * Displayed a link to the cart including the number of items present and the cart total.
311
	 *
312
	 * @package    lsx
313
	 * @subpackage woocommerce
314
	 */
315
	function lsx_wc_cart_link() {
316
		?>
317
			<a title="<?php esc_attr_e( 'View your shopping cart', 'lsx' ); ?>" href="<?php echo esc_url( wc_get_cart_url() ); ?>" data-toggle="dropdown" class="dropdown-toggle" aria-haspopup="true">
318
				<?php /* Translators: %s: items quantity */ ?>
319
				<span class="lsx-wc-cart-amount"><?php echo wp_kses_data( WC()->cart->get_cart_subtotal() ); ?></span> <span class="lsx-wc-cart-count"><?php echo wp_kses_data( sprintf( _n( '%d item', '%d items', WC()->cart->get_cart_contents_count(), 'lsx' ), WC()->cart->get_cart_contents_count() ) );?></span>
320
			</a>
321
		<?php
322
	}
323
324
endif;
325
326
if ( ! function_exists( 'lsx_wc_loop_shop_per_page' ) ) :
327
328
	/**
329
	 * Changes the number of products to display on shop.
330
	 *
331
	 * @package    lsx
332
	 * @subpackage woocommerce
333
	 */
334
	function lsx_wc_loop_shop_per_page( $items ) {
0 ignored issues
show
Unused Code introduced by
The parameter $items is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
335
		$items = 20;
336
		return $items;
337
	}
338
339
	add_filter( 'loop_shop_per_page', 'lsx_wc_loop_shop_per_page', 20 );
340
341
endif;
342
343
if ( ! function_exists( 'lsx_wc_add_to_cart_message_html' ) ) :
344
345
	/**
346
	 * Changes the "added to cart" message HTML.
347
	 *
348
	 * @package    lsx
349
	 * @subpackage woocommerce
350
	 */
351
	function lsx_wc_add_to_cart_message_html( $message, $products ) {
0 ignored issues
show
Unused Code introduced by
The parameter $products is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
352
		$message = '<div class="woocommerce-message-added-to-cart">' . $message . '</div>';
353
		return $message;
354
	}
355
356
	add_filter( 'wc_add_to_cart_message_html', 'lsx_wc_add_to_cart_message_html', 20, 2 );
357
358
endif;
359
360
if ( defined( 'WC_VERSION' ) && version_compare( WC_VERSION, '2.3', '>=' ) ) {
361
	add_filter( 'woocommerce_add_to_cart_fragments', 'lsx_wc_cart_link_fragment' );
362
} else {
363
	add_filter( 'add_to_cart_fragments', 'lsx_wc_cart_link_fragment' );
364
}
365
366
remove_action( 'woocommerce_after_shop_loop', 'woocommerce_pagination', 10 );
367
368
add_action( 'woocommerce_after_shop_loop', 'lsx_wc_sorting_wrapper', 9 );
369
add_action( 'woocommerce_after_shop_loop', 'woocommerce_catalog_ordering', 10 );
370
add_action( 'woocommerce_after_shop_loop', 'woocommerce_result_count', 20 );
371
add_action( 'woocommerce_after_shop_loop', 'woocommerce_pagination', 30 );
372
add_action( 'woocommerce_after_shop_loop', 'lsx_wc_sorting_wrapper_close', 31 );
373
374
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
375
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );
376
377
add_action( 'woocommerce_before_shop_loop', 'lsx_wc_sorting_wrapper', 9 );
378
add_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 10 );
379
add_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
380
add_action( 'woocommerce_before_shop_loop', 'lsx_wc_woocommerce_pagination', 30 );
381
add_action( 'woocommerce_before_shop_loop', 'lsx_wc_sorting_wrapper_close', 31 );
382
383
if ( ! function_exists( 'lsx_wc_sorting_wrapper' ) ) :
384
385
	/**
386
	 * Sorting wrapper.
387
	 *
388
	 * @package    lsx
389
	 * @subpackage woocommerce
390
	 */
391
	function lsx_wc_sorting_wrapper() {
392
		echo '<div class="lsx-wc-sorting">';
393
	}
394
395
endif;
396
397
if ( ! function_exists( 'lsx_wc_sorting_wrapper_close' ) ) :
398
399
	/**
400
	 * Sorting wrapper close.
401
	 *
402
	 * @package    lsx
403
	 * @subpackage woocommerce
404
	 */
405
	function lsx_wc_sorting_wrapper_close() {
406
		echo '</div>';
407
	}
408
409
endif;
410
411
if ( ! function_exists( 'lsx_wc_product_columns_wrapper_close' ) ) :
412
413
	/**
414
	 * Product columns wrapper close.
415
	 *
416
	 * @package    lsx
417
	 * @subpackage woocommerce
418
	 */
419
	function lsx_wc_product_columns_wrapper_close() {
420
		echo '</div>';
421
	}
422
423
endif;
424
425
if ( ! function_exists( 'lsx_wc_woocommerce_pagination' ) ) :
426
427
	/**
428
	 * LSX WooCommerce Pagination
429
	 * WooCommerce disables the product pagination inside the woocommerce_product_subcategories() function
430
	 * but since LSX adds pagination before that function is excuted we need a separate function to
431
	 * determine whether or not to display the pagination.
432
	 *
433
	 * @package    lsx
434
	 * @subpackage woocommerce
435
	 */
436
	function lsx_wc_woocommerce_pagination() {
437
		if ( woocommerce_products_will_display() ) {
438
			woocommerce_pagination();
439
		}
440
	}
441
442
endif;
443
444
if ( ! function_exists( 'lsx_customizer_wc_controls' ) ) :
445
446
	/**
447
	 * Returns an array of the core panel.
448
	 *
449
	 * @package    lsx
450
	 * @subpackage customizer
451
	 *
452
	 * @return $lsx_controls array()
0 ignored issues
show
Documentation introduced by
The doc-type $lsx_controls could not be parsed: Unknown type name "$lsx_controls" at position 0. (view supported doc-types)

This check marks PHPDoc comments that could not be parsed by our parser. To see which comment annotations we can parse, please refer to our documentation on supported doc-types.

Loading history...
453
	 */
454
	function lsx_customizer_wc_controls( $lsx_controls ) {
455
		$lsx_controls['sections']['lsx-wc'] = array(
456
			'title'       => esc_html__( 'WooCommerce', 'lsx' ),
457
			'description' => esc_html__( 'Change the WooCommerce settings.', 'lsx' ),
458
			'priority'    => 23,
459
		);
460
461
		$lsx_controls['settings']['lsx_footer_bar_status'] = array(
462
			'default'           => '1',
463
			'sanitize_callback' => 'lsx_sanitize_checkbox',
464
			'transport'         => 'postMessage',
465
		);
466
467
		$lsx_controls['fields']['lsx_footer_bar_status'] = array(
468
			'label'   => esc_html__( 'Footer Bar', 'lsx' ),
469
			'section' => 'lsx-wc',
470
			'type'    => 'checkbox',
471
		);
472
473
		return $lsx_controls;
474
	}
475
476
endif;
477
478
add_filter( 'lsx_customizer_controls', 'lsx_customizer_wc_controls' );
479
480
if ( ! function_exists( 'lsx_wc_footer_bar' ) ) :
481
482
	/**
483
	 * Display WC footer bar.
484
	 *
485
	 * @package    lsx
486
	 * @subpackage woocommerce
487
	 */
488
	function lsx_wc_footer_bar() {
489
		if ( ! empty( get_theme_mod( 'lsx_footer_bar_status', '1' ) ) ) :
490
			global $woocommerce;
491
			?>
492
			<div class="lsx-wc-footer-bar">
493
				<form role="search" method="get" action="<?php echo esc_url( home_url() ); ?>" class="lsx-wc-footer-bar-form">
494
					<fieldset>
495
						<legend class="screen-reader-text"><?php esc_html_e( 'Search products', 'lsx' ); ?></legend>
496
						<input type="search" name="s" placeholder="<?php esc_attr_e( 'Search products…', 'lsx' ); ?>" class="form-control">
497
					</fieldset>
498
				</form>
499
500
				<ul class="lsx-wc-footer-bar-list">
501
					<li class="lsx-wc-footer-bar-item">
502
						<a href="<?php echo esc_url( home_url() ); ?>" class="lsx-wc-footer-bar-link">
503
							<i class="fa fa-home" aria-hidden="true"></i>
504
							<span><?php esc_html_e( 'Home', 'lsx' ); ?></span>
505
						</a>
506
					</li>
507
508
					<li class="lsx-wc-footer-bar-item">
509
						<a href="<?php echo esc_url( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) ); ?>" class="lsx-wc-footer-bar-link">
510
							<i class="fa fa-user" aria-hidden="true"></i>
511
							<span><?php esc_html_e( 'Account', 'lsx' ); ?></span>
512
						</a>
513
					</li>
514
515
					<li class="lsx-wc-footer-bar-item">
516
						<a href="#" class="lsx-wc-footer-bar-link lsx-wc-footer-bar-link-toogle">
517
							<i class="fa fa-search" aria-hidden="true"></i>
518
							<span><?php esc_html_e( 'Search', 'lsx' ); ?></span>
519
						</a>
520
					</li>
521
522
					<li class="lsx-wc-footer-bar-item">
523
						<a href="<?php echo esc_url( $woocommerce->cart->get_cart_url() ); ?>" class="lsx-wc-footer-bar-link">
524
							<i class="fa fa-shopping-basket" aria-hidden="true"></i>
525
							<span><?php esc_html_e( 'Cart', 'lsx' ); ?></span>
526
						</a>
527
					</li>
528
				</ul>
529
			</div>
530
			<?php
531
		endif;
532
	}
533
534
	add_action( 'lsx_body_bottom', 'lsx_wc_footer_bar', 15 );
535
536
endif;
537