Passed
Push — master ( cdd39e...ebde67 )
by Warwick
02:47 queued 12s
created

woocommerce.php ➔ lsx_wc_add_cart()   B

Complexity

Conditions 7
Paths 10

Size

Total Lines 46

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 7
nc 10
nop 2
dl 0
loc 46
rs 8.2448
c 0
b 0
f 0
1
<?php
2
/**
3
 * LSX functions and definitions - WooCommerce.
4
 *
5
 * @package    lsx
6
 * @subpackage woocommerce
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
		add_theme_support( 'wc-product-gallery-zoom' );
24
		add_theme_support( 'wc-product-gallery-lightbox' );
25
		add_theme_support( 'wc-product-gallery-slider' );
26
	}
27
28
	add_action( 'after_setup_theme', 'lsx_wc_support' );
29
30
endif;
31
32 View Code Duplication
if ( ! function_exists( 'lsx_wc_scripts_add_styles' ) ) :
0 ignored issues
show
Duplication introduced
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
33
34
	/**
35
	 * WooCommerce enqueue styles.
36
	 *
37
	 * @package    lsx
38
	 * @subpackage woocommerce
39
	 */
40
	function lsx_wc_scripts_add_styles() {
41
		wp_enqueue_style( 'woocommerce-lsx', get_template_directory_uri() . '/assets/css/woocommerce/woocommerce.css', array( 'lsx_main' ), LSX_VERSION );
42
		wp_style_add_data( 'woocommerce-lsx', 'rtl', 'replace' );
43
44
		// Remove WC Shipping Multiple Addresses specific script causing issues on checkout.
45
		wp_dequeue_script( 'wcms-country-select' );
46
	}
47
48
	add_action( 'wp_enqueue_scripts', 'lsx_wc_scripts_add_styles' );
49
50
endif;
51
52
if ( ! function_exists( 'lsx_wc_form_field_args' ) ) :
53
54
	/**
55
	 * WooCommerce form fields.
56
	 *
57
	 * @package    lsx
58
	 * @subpackage woocommerce
59
	 */
60
	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...
61
		$args['input_class'][] = 'form-control';
62
63
		return $args;
64
	}
65
66
	add_action( 'woocommerce_form_field_args', 'lsx_wc_form_field_args', 10, 3 );
67
68
endif;
69
70
if ( ! function_exists( 'lsx_wc_theme_wrapper_start' ) ) :
71
72
	/**
73
	 * WooCommerce wrapper start.
74
	 *
75
	 * @package    lsx
76
	 * @subpackage woocommerce
77
	 */
78 View Code Duplication
	function lsx_wc_theme_wrapper_start() {
0 ignored issues
show
Duplication introduced by
This function seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
79
		lsx_content_wrap_before();
80
		echo '<div id="primary" class="content-area ' . esc_attr( lsx_main_class() ) . '">';
81
		lsx_content_before();
82
		echo '<main id="main" class="site-main" role="main">';
83
		lsx_content_top();
84
	}
85
86
	remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 );
87
	add_action( 'woocommerce_before_main_content', 'lsx_wc_theme_wrapper_start' );
88
89
endif;
90
91 View Code Duplication
if ( ! function_exists( 'lsx_wc_theme_wrapper_end' ) ) :
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
92
93
	/**
94
	 * WooCommerce wrapper end.
95
	 *
96
	 * @package    lsx
97
	 * @subpackage woocommerce
98
	 */
99
	function lsx_wc_theme_wrapper_end() {
100
		lsx_content_bottom();
101
		echo '</main>';
102
		lsx_content_after();
103
		echo '</div>';
104
		lsx_content_wrap_after();
105
	}
106
107
	remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10 );
108
	add_action( 'woocommerce_after_main_content', 'lsx_wc_theme_wrapper_end' );
109
110
endif;
111
112
if ( ! function_exists( 'lsx_wc_disable_lsx_banner_plugin' ) ) :
113
114
	/**
115
	 * Disable LSX Banners plugin in some WC pages.
116
	 *
117
	 * @package    lsx
118
	 * @subpackage woocommerce
119
	 */
120
	function lsx_wc_disable_lsx_banner_plugin( $disabled ) {
121
		global $post;
122
123
		if ( $post && class_exists( 'WC_Wishlists_Pages' ) && WC_Wishlists_Pages::is_wishlist_page( $post->post_name ) ) {
124
			$disabled = true;
125
		}
126
127
		return $disabled;
128
	}
129
130
	add_filter( 'lsx_banner_plugin_disable', 'lsx_wc_disable_lsx_banner_plugin' );
131
132
endif;
133
134
if ( ! function_exists( 'lsx_wc_disable_lsx_banner' ) ) :
135
136
	/**
137
	 * Disable LSX Banners banner in some WC pages.
138
	 *
139
	 * @package    lsx
140
	 * @subpackage woocommerce
141
	 */
142
	function lsx_wc_disable_lsx_banner( $disabled ) {
143
		if ( is_shop() || is_product_category() || is_product_tag() || is_product() ) {
144
			$disabled = true;
145
		}
146
147
		return $disabled;
148
	}
149
150
	add_filter( 'lsx_banner_disable', 'lsx_wc_disable_lsx_banner' );
151
152
endif;
153
154
if ( ! function_exists( 'lsx_wc_add_cart' ) ) :
155
156
	/**
157
	 * Adds WC cart to the header.
158
	 *
159
	 * @package    lsx
160
	 * @subpackage template-tags
161
	 */
162
	function lsx_wc_add_cart( $items, $args ) {
163
		$cart_menu_item_position = apply_filters( 'lsx_wc_cart_menu_item_position', 'primary' );
164
165
		$cart_logged_out_position = $cart_menu_item_position . '_logged_out';
166
167
		if ( $cart_menu_item_position === $args->theme_location || $cart_logged_out_position === $args->theme_location ) {
168
			$customizer_option  = get_theme_mod( 'lsx_header_wc_cart', false );
169
170
			if ( ! empty( $customizer_option ) ) {
171
				ob_start();
172
				the_widget( 'WC_Widget_Cart', 'title=' );
173
				$widget = ob_get_clean();
174
175
				if ( is_cart() ) {
176
					$class = 'current-menu-item';
177
				} else {
178
					$class = '';
179
				}
180
181
				$item_class = 'menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children dropdown lsx-wc-cart-menu-item ' . $class;
182
				$item_class = apply_filters( 'lsx_wc_cart_menu_item_class', $item_class );
183
184
				$item = '<li class="' . $item_class . '">' .
185
							'<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">' .
186
								'<span class="lsx-wc-cart-amount">' . wp_kses_data( WC()->cart->get_cart_subtotal() ) . '</span>' .
187
								/* Translators: %s: items quantity */
188
								'<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>' .
189
								( ! empty( WC()->cart->get_cart_contents_count() ) ? '<span class="lsx-wc-cart-count-badge">' . wp_kses_data( WC()->cart->get_cart_contents_count() ) . '</span>' : '' ) .
190
							'</a>' .
191
							'<ul role="menu" class=" dropdown-menu lsx-wc-cart-sub-menu">' .
192
								'<li>' .
193
									'<div class="lsx-wc-cart-dropdown">' . $widget . '</div>' .
194
								'</li>' .
195
							'</ul>' .
196
						'</li>';
197
198
				if ( 'top-menu' === $args->theme_location ) {
199
					$items = $item . $items;
200
				} else {
201
					$items = $items . $item;
202
				}
203
			}
204
		}
205
206
		return $items;
207
	}
208
209
	add_filter( 'wp_nav_menu_items', 'lsx_wc_add_cart', 10, 2 );
210
211
endif;
212
213
if ( ! function_exists( 'lsx_wc_products_widget_wrapper_before' ) ) :
214
215
	/**
216
	 * Change WC products widget wrapper (before).
217
	 *
218
	 * @package    lsx
219
	 * @subpackage woocommerce
220
	 */
221
	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...
222
		$html = '<div class="lsx-woocommerce-slider lsx-woocommerce-shortcode">';
223
		return $html;
224
	}
225
226
	add_filter( 'woocommerce_before_widget_product_list', 'lsx_wc_products_widget_wrapper_before', 15 );
227
228
endif;
229
230
if ( ! function_exists( 'lsx_wc_products_widget_wrapper_after' ) ) :
231
232
	/**
233
	 * Change WC products widget wrapper (after).
234
	 *
235
	 * @package    lsx
236
	 * @subpackage woocommerce
237
	 */
238
	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...
239
		$html = '</div>';
240
		return $html;
241
	}
242
243
	add_filter( 'woocommerce_after_widget_product_list', 'lsx_wc_products_widget_wrapper_after', 15 );
244
245
endif;
246
247
if ( ! function_exists( 'lsx_wc_reviews_widget_override' ) ) :
248
249
	/**
250
	 * Override WC ewviews widget.
251
	 *
252
	 * @package    lsx
253
	 * @subpackage woocommerce
254
	 */
255
	function lsx_wc_reviews_widget_override() {
256
		if ( class_exists( 'WC_Widget_Recent_Reviews' ) ) {
257
			unregister_widget( 'WC_Widget_Recent_Reviews' );
258
			require get_template_directory() . '/includes/classes/class-lsx-wc-widget-recent-reviews.php';
259
			register_widget( 'LSX_WC_Widget_Recent_Reviews' );
260
		}
261
	}
262
263
	add_action( 'widgets_init', 'lsx_wc_reviews_widget_override', 15 );
264
265
endif;
266
267
if ( ! function_exists( 'lsx_wc_change_price_html' ) ) :
268
269
	/**
270
	 * Change WC ZERO price to "free".
271
	 *
272
	 * @package    lsx
273
	 * @subpackage woocommerce
274
	 *
275
	 * @param $price string
276
	 * @param $product WC_Product
277
	 * @return string
278
	 */
279
	function lsx_wc_change_price_html( $price, $product ) {
280
		if ( empty( $product->get_price() ) ) {
281
			if ( $product->is_on_sale() && $product->get_regular_price() ) {
282
				$regular_price = wc_get_price_to_display( $product, array(
283
					'qty' => 1,
284
					'price' => $product->get_regular_price(),
285
				) );
286
287
				$price = wc_format_price_range( $regular_price, esc_html__( 'Free!', 'lsx' ) );
288
			} else {
289
				$price = '<span class="amount">' . esc_html__( 'Free!', 'lsx' ) . '</span>';
290
			}
291
		}
292
293
		return $price;
294
	}
295
296
	add_filter( 'woocommerce_get_price_html', 'lsx_wc_change_price_html', 15, 2 );
297
298
endif;
299
300
if ( ! function_exists( 'lsx_wc_cart_link_fragment' ) ) :
301
302
	/**
303
	 * Cart Fragments.
304
	 * Ensure cart contents update when products are added to the cart via AJAX.
305
	 *
306
	 * @package    lsx
307
	 * @subpackage woocommerce
308
	 */
309
	function lsx_wc_cart_link_fragment( $fragments ) {
310
		global $woocommerce;
311
312
		ob_start();
313
		lsx_wc_cart_link();
314
		$fragments['li.lsx-wc-cart-menu-item > a'] = ob_get_clean();
315
316
		ob_start();
317
		lsx_wc_items_counter();
318
		$items_counter = ob_get_clean();
319
320
		if ( ! empty( $items_counter ) ) {
321
			$fragments['div.widget_shopping_cart_content'] = preg_replace( '/(.+)(<\/ul>)[\s\n]*(<p class="woocommerce-mini-cart__total)(.+)/', '$1' . $items_counter . '$2$3$4', $fragments['div.widget_shopping_cart_content'] );
322
		}
323
324
		return $fragments;
325
	}
326
327
endif;
328
329
if ( ! function_exists( 'lsx_wc_cart_link' ) ) :
330
331
	/**
332
	 * Cart Link.
333
	 * Displayed a link to the cart including the number of items present and the cart total.
334
	 *
335
	 * @package    lsx
336
	 * @subpackage woocommerce
337
	 */
338
	function lsx_wc_cart_link() {
339
		?>
340
			<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">
341
				<span class="lsx-wc-cart-amount"><?php echo wp_kses_data( WC()->cart->get_cart_subtotal() ); ?></span>
342
343
				<?php /* Translators: %s: items quantity */ ?>
344
				<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>
345
346
				<?php if ( ! empty( WC()->cart->get_cart_contents_count() ) ) : ?>
347
					<span class="lsx-wc-cart-count-badge"><?php echo wp_kses_data( WC()->cart->get_cart_contents_count() );?></span>
348
				<?php endif; ?>
349
			</a>
350
		<?php
351
	}
352
353
endif;
354
355
if ( ! function_exists( 'lsx_wc_items_counter' ) ) :
356
357
	/**
358
	 * Add car item hidden items counter.
359
	 *
360
	 * @package    lsx
361
	 * @subpackage woocommerce
362
	 */
363
	function lsx_wc_items_counter() {
364
		$count = (int) WC()->cart->get_cart_contents_count();
365
		$items_counter = '';
366
367
		if ( ! empty( $count ) ) {
368
			$count -= 3;
369
370
			if ( 1 === $count ) {
371
				$items_counter = esc_html__( '1 other item in cart', 'lsx' );
372
			} elseif ( $count > 1 ) {
373
				/* Translators: %s: items counter */
374
				$items_counter = sprintf( esc_html__( '%s other items in cart', 'lsx' ), $count );
375
			}
376
		}
377
		$cart_url = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : WC()->cart->get_cart_url();
378
		if ( ! empty( $items_counter ) ) :
379
			?>
380
				<li class="woocommerce-mini-cart-item mini_cart_item" style="display: block;">
381
					<a href="<?php echo esc_url( $cart_url ); ?>"><?php echo esc_html( $items_counter ); ?></a>
382
				</li>
383
			<?php
384
		endif;
385
	}
386
387
endif;
388
389
if ( ! function_exists( 'lsx_wc_loop_shop_per_page' ) ) :
390
391
	/**
392
	 * Changes the number of products to display on shop.
393
	 *
394
	 * @package    lsx
395
	 * @subpackage woocommerce
396
	 */
397
	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...
398
		$items = 20;
399
		return $items;
400
	}
401
402
	add_filter( 'loop_shop_per_page', 'lsx_wc_loop_shop_per_page', 20 );
403
404
endif;
405
406
if ( ! function_exists( 'lsx_wc_add_to_cart_message_html' ) ) :
407
408
	/**
409
	 * Changes the "added to cart" message HTML.
410
	 *
411
	 * @package    lsx
412
	 * @subpackage woocommerce
413
	 */
414
	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...
415
		$message = '<div class="woocommerce-message-added-to-cart">' . $message . '</div>';
416
		return $message;
417
	}
418
419
	add_filter( 'wc_add_to_cart_message_html', 'lsx_wc_add_to_cart_message_html', 20, 2 );
420
421
endif;
422
423
if ( defined( 'WC_VERSION' ) && version_compare( WC_VERSION, '2.3', '>=' ) ) {
424
	add_filter( 'woocommerce_add_to_cart_fragments', 'lsx_wc_cart_link_fragment' );
425
} else {
426
	add_filter( 'add_to_cart_fragments', 'lsx_wc_cart_link_fragment' );
427
}
428
429
remove_action( 'woocommerce_after_shop_loop', 'woocommerce_pagination', 10 );
430
431
add_action( 'woocommerce_after_shop_loop', 'lsx_wc_sorting_wrapper', 9 );
432
add_action( 'woocommerce_after_shop_loop', 'woocommerce_catalog_ordering', 10 );
433
add_action( 'woocommerce_after_shop_loop', 'woocommerce_result_count', 20 );
434
add_action( 'woocommerce_after_shop_loop', 'woocommerce_pagination', 30 );
435
add_action( 'woocommerce_after_shop_loop', 'lsx_wc_sorting_wrapper_close', 31 );
436
437
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
438
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );
439
440
add_action( 'woocommerce_before_shop_loop', 'lsx_wc_sorting_wrapper', 9 );
441
add_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 10 );
442
add_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
443
add_action( 'woocommerce_before_shop_loop', 'lsx_wc_woocommerce_pagination', 30 );
444
add_action( 'woocommerce_before_shop_loop', 'lsx_wc_sorting_wrapper_close', 31 );
445
446
if ( ! function_exists( 'lsx_wc_sorting_wrapper' ) ) :
447
448
	/**
449
	 * Sorting wrapper.
450
	 *
451
	 * @package    lsx
452
	 * @subpackage woocommerce
453
	 */
454
	function lsx_wc_sorting_wrapper() {
455
		echo '<div class="lsx-wc-sorting">';
456
	}
457
458
endif;
459
460
if ( ! function_exists( 'lsx_wc_sorting_wrapper_close' ) ) :
461
462
	/**
463
	 * Sorting wrapper close.
464
	 *
465
	 * @package    lsx
466
	 * @subpackage woocommerce
467
	 */
468
	function lsx_wc_sorting_wrapper_close() {
469
		echo '</div>';
470
	}
471
472
endif;
473
474
if ( ! function_exists( 'lsx_wc_product_columns_wrapper_close' ) ) :
475
476
	/**
477
	 * Product columns wrapper close.
478
	 *
479
	 * @package    lsx
480
	 * @subpackage woocommerce
481
	 */
482
	function lsx_wc_product_columns_wrapper_close() {
483
		echo '</div>';
484
	}
485
486
endif;
487
488
if ( ! function_exists( 'lsx_wc_woocommerce_pagination' ) ) :
489
490
	/**
491
	 * LSX WooCommerce Pagination
492
	 * WooCommerce disables the product pagination inside the woocommerce_product_subcategories() function
493
	 * but since LSX adds pagination before that function is excuted we need a separate function to
494
	 * determine whether or not to display the pagination.
495
	 *
496
	 * @package    lsx
497
	 * @subpackage woocommerce
498
	 */
499
	function lsx_wc_woocommerce_pagination() {
500
		if ( woocommerce_products_will_display() ) {
501
			woocommerce_pagination();
502
		}
503
	}
504
505
endif;
506
507
if ( ! function_exists( 'lsx_customizer_wc_controls' ) ) :
508
509
	/**
510
	 * Returns an array of the core panel.
511
	 *
512
	 * @package    lsx
513
	 * @subpackage customizer
514
	 *
515
	 * @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...
516
	 */
517
	function lsx_customizer_wc_controls( $lsx_controls ) {
518
		$lsx_controls['panels']['lsx-wc'] = array(
519
			'title'       => esc_html__( 'WooCommerce', 'lsx' ),
520
			'description' => esc_html__( 'Change the WooCommerce settings.', 'lsx' ),
521
			'priority'    => 23,
522
		);
523
524
		/**
525
		 * Global.
526
		 */
527
528
		$lsx_controls['sections']['lsx-wc-global'] = array(
529
			'title'       => esc_html__( 'Global', 'lsx' ),
530
			'description' => esc_html__( 'Change the WooCommerce global settings.', 'lsx' ),
531
			'panel'       => 'lsx-wc',
532
			'priority'    => 1,
533
		);
534
535
		$lsx_controls['settings']['lsx_wc_mobile_footer_bar_status'] = array(
536
			'default'           => '1',
537
			'sanitize_callback' => 'lsx_sanitize_checkbox',
538
		);
539
540
		$lsx_controls['fields']['lsx_wc_mobile_footer_bar_status'] = array(
541
			'label'       => esc_html__( 'Footer Bar', 'lsx' ),
542
			'description' => esc_html__( 'Enable the mobile footer bar.', 'lsx' ),
543
			'section'     => 'lsx-wc-global',
544
			'type'        => 'checkbox',
545
			'priority'    => 1,
546
		);
547
548
		/**
549
		 * Cart.
550
		 */
551
552
		$lsx_controls['sections']['lsx-wc-cart'] = array(
553
			'title'       => esc_html__( 'Cart', 'lsx' ),
554
			'description' => esc_html__( 'Change the WooCommerce cart settings.', 'lsx' ),
555
			'panel'       => 'lsx-wc',
556
			'priority'    => 2,
557
		);
558
559
		$lsx_controls['settings']['lsx_header_wc_cart'] = array(
560
			'default'           => false,
561
			'sanitize_callback' => 'lsx_sanitize_checkbox',
562
		);
563
564
		$lsx_controls['fields']['lsx_header_wc_cart'] = array(
565
			'label'       => esc_html__( 'Menu Item', 'lsx' ),
566
			'description' => esc_html__( 'Enable the cart menu item.', 'lsx' ),
567
			'section'     => 'lsx-wc-cart',
568
			'type'        => 'checkbox',
569
			'priority'    => 1,
570
		);
571
572
		return $lsx_controls;
573
	}
574
575
	add_filter( 'lsx_customizer_controls', 'lsx_customizer_wc_controls' );
576
577
endif;
578
579
if ( ! function_exists( 'lsx_wc_footer_bar' ) ) :
580
581
	/**
582
	 * Display WC footer bar.
583
	 *
584
	 * @package    lsx
585
	 * @subpackage woocommerce
586
	 */
587
	function lsx_wc_footer_bar() {
588
		$cart_url = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : WC()->cart->get_cart_url();
589
		if ( ! empty( get_theme_mod( 'lsx_wc_mobile_footer_bar_status', '1' ) ) ) :
590
			?>
591
			<div class="lsx-wc-footer-bar">
592
				<form role="search" method="get" action="<?php echo esc_url( home_url() ); ?>" class="lsx-wc-footer-bar-form">
593
					<fieldset>
594
						<legend class="screen-reader-text"><?php esc_html_e( 'Search products', 'lsx' ); ?></legend>
595
						<input type="search" name="s" placeholder="<?php esc_attr_e( 'Search products...', 'lsx' ); ?>" class="form-control">
596
					</fieldset>
597
				</form>
598
599
				<ul class="lsx-wc-footer-bar-items">
600
					<li class="lsx-wc-footer-bar-item">
601
						<a href="<?php echo esc_url( home_url() ); ?>" class="lsx-wc-footer-bar-link">
602
							<i class="fa fa-home" aria-hidden="true"></i>
603
							<span><?php esc_html_e( 'Home', 'lsx' ); ?></span>
604
						</a>
605
					</li>
606
607
					<li class="lsx-wc-footer-bar-item">
608
						<a href="<?php echo esc_url( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) ); ?>" class="lsx-wc-footer-bar-link">
609
							<i class="fa fa-user" aria-hidden="true"></i>
610
							<span><?php esc_html_e( 'Account', 'lsx' ); ?></span>
611
						</a>
612
					</li>
613
614
					<li class="lsx-wc-footer-bar-item">
615
						<a href="#" class="lsx-wc-footer-bar-link lsx-wc-footer-bar-link-toogle">
616
							<i class="fa fa-search" aria-hidden="true"></i>
617
							<span><?php esc_html_e( 'Search', 'lsx' ); ?></span>
618
						</a>
619
					</li>
620
621
					<li class="lsx-wc-footer-bar-item">
622
						<a href="<?php echo esc_url( $cart_url ); ?>" class="lsx-wc-footer-bar-link">
623
							<i class="fa fa-shopping-basket" aria-hidden="true"></i>
624
							<?php $count = WC()->cart->get_cart_contents_count(); ?>
625
							<?php if ( ! empty( $count ) ) : ?>
626
								<span class="lsx-wc-footer-bar-count"><?php echo wp_kses_data( $count ); ?></span>
627
							<?php endif; ?>
628
							<span><?php esc_html_e( 'Cart', 'lsx' ); ?></span>
629
						</a>
630
					</li>
631
				</ul>
632
			</div>
633
			<?php
634
		endif;
635
	}
636
637
	add_action( 'lsx_body_bottom', 'lsx_wc_footer_bar', 15 );
638
639
endif;
640
641
if ( ! function_exists( 'lsx_wc_body_class' ) ) :
642
643
	/**
644
	 * Changes body class.
645
	 *
646
	 * @package    lsx
647
	 * @subpackage woocommerce
648
	 */
649
	function lsx_wc_body_class( $classes ) {
650
		global $post;
651
652
		if ( $post && class_exists( 'WC_Wishlists_Pages' ) && WC_Wishlists_Pages::is_wishlist_page( $post->post_name ) ) {
653
			$classes[] = 'woocommerce-page woocommerce-wishlist';
654
		}
655
656
		if ( ! empty( get_theme_mod( 'lsx_wc_mobile_footer_bar_status', '1' ) ) ) {
657
			$classes[] = 'lsx-wc-has-footer-bar';
658
		}
659
660
		return $classes;
661
	}
662
663
	add_filter( 'body_class', 'lsx_wc_body_class', 2999 );
664
665
endif;
666
667
if ( ! function_exists( 'lsx_wc_downloadable_products' ) ) :
668
669
	/**
670
	 * Changes downloads "download" button text.
671
	 *
672
	 * @package    lsx
673
	 * @subpackage woocommerce
674
	 */
675
	function lsx_wc_downloadable_products( $downloads ) {
676
		foreach ( $downloads as $i => $download ) {
677
			$downloads[ $i ]['download_name'] = esc_html__( 'Download', 'lsx' );
678
		}
679
680
		return $downloads;
681
	}
682
683
	add_filter( 'woocommerce_customer_get_downloadable_products', 'lsx_wc_downloadable_products', 2999 );
684
685
endif;
686
687
if ( ! function_exists( 'lsx_wc_move_bundle_products' ) ) :
688
689
	/**
690
	 * WooCommerce - Move the bundle products to a tab.
691
	 *
692
	 * @package    lsx
693
	 * @subpackage woocommerce
694
	 */
695
	function lsx_wc_move_bundle_products( $tabs ) {
696
		global $product, $post;
697
698
		if ( method_exists( $product , 'get_bundled_items' ) ) {
699
			$bundled_items = $product->get_bundled_items();
700
701
			if ( ! empty( $bundled_items ) ) {
702
				$tabs['bundled_products'] = array(
703
					'title'    => __( 'Included Products', 'lsx' ),
704
					'priority' => 10,
705
					'callback' => 'lsx_wc_bundle_products',
706
				);
707
			}
708
		}
709
710
		if ( isset( $tabs['description'] ) ) {
711
			$tabs['description']['priority'] = 5;
712
		}
713
714
		if ( isset( $tabs['reviews'] ) ) {
715
			$tabs['reviews']['priority'] = 15;
716
		}
717
718
		if ( isset( $tabs['product_enquiry'] ) ) {
719
			$tabs['product_enquiry']['priority'] = 20;
720
		}
721
722
		return $tabs;
723
	}
724
725
	add_action( 'woocommerce_product_tabs', 'lsx_wc_move_bundle_products', 50 );
726
727
endif;
728
729
if ( ! function_exists( 'lsx_wc_bundle_products' ) ) :
730
731
	function lsx_wc_bundle_products() {
732
		global $product, $post;
733
734
		if ( method_exists( $product , 'get_bundled_items' ) ) {
735
			$bundled_items = $product->get_bundled_items();
736
737
			// do_action( 'woocommerce_before_bundled_items', $product );
738
739
			// foreach ( $bundled_items as $bundled_item ) {
740
			// 	do_action( 'woocommerce_bundled_item_details', $bundled_item, $product );
741
			// }
742
743
			// do_action( 'woocommerce_after_bundled_items', $product );
744
745
			$product_original = $product;
746
747
			// $this->widget_start( $args, $instance );
748
749
			// @codingStandardsIgnoreLine
750
			echo apply_filters( 'woocommerce_before_widget_product_list', '<ul class="product_list_widget">' );
751
752
			foreach ( $bundled_items as $bundled_item ) {
753
				$product = wc_get_product( $bundled_item->item_data['product_id'] );
754
				wc_get_template( 'content-widget-product.php' );
755
				$product = $product_original;
756
			}
757
758
			// @codingStandardsIgnoreLine
759
			echo apply_filters( 'woocommerce_after_widget_product_list', '</ul>' );
760
		}
761
762
		// $this->widget_end( $args );
763
	}
764
765
endif;
766
767
768
if ( ! function_exists( 'lsx_wc_product_searchform' ) ) :
769
	/**
770
	 * woo_custom_product_searchform
771
	 *
772
	 * @access      public
773
	 * @since       1.0
774
	 * @return      void
775
	 */
776
	function lsx_wc_product_searchform( $form ) {
0 ignored issues
show
Unused Code introduced by
The parameter $form 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...
777
778
		$form = '
779
			<form role="search" method="get" class="search-form form-inline" id="searchform" action="<?php echo esc_url( home_url( \'/\' ) ); ?>">
780
				<div class="input-group">
781
					<input type="search" value="<?php if ( is_search() ) { echo get_search_query(); } ?>" name="s" class="search-field form-control" placeholder="<?php esc_attr_e( \'Search\', \'lsx\' ); ?> <?php echo esc_attr( get_bloginfo( \'name\' ) ); ?>">
782
					<label class="hide"><?php esc_attr_e( \'Search for:\', \'lsx\' ); ?></label>
783
784
					<span class="input-group-btn">
785
						<button type="submit" class="search-submit btn btn-default"><span class="fa fa-search"></span></button>
786
					</span>
787
				</div>
788
789
				<input type="hidden" name="post_type" value="product" />
790
			</form>
791
		';
792
793
		return $form;
794
795
	}
796
endif;
797
add_filter( 'get_product_search_form' , 'lsx_wc_product_searchform', 10, 1 );
798
799
	/**
800
	 * Output the pagination.
801
	*/
802
function woocommerce_pagination() {
803
	if ( ! wc_get_loop_prop( 'is_paginated' ) || ! woocommerce_products_will_display() ) {
804
		return;
805
	}
806
	$args = array(
807
		'total'   => wc_get_loop_prop( 'total_pages' ),
808
		'current' => wc_get_loop_prop( 'current_page' ),
809
	);
810
811
	if ( wc_get_loop_prop( 'is_shortcode' ) ) {
812
		$args['base']   = esc_url_raw( add_query_arg( 'product-page', '%#%', false ) );
813
		$args['format'] = '?product-page = %#%';
814
	} else {
815
		$args['base']   = esc_url_raw( str_replace( 999999999, '%#%', remove_query_arg( 'add-to-cart', get_pagenum_link( 999999999, false ) ) ) );
816
		$args['format'] = '';
817
	}
818
819
	echo wp_kses_post( '<div class="lsx-pagination-wrapper">' );
820
	$template = wc_get_template_html( 'loop/pagination.php', $args );
821
	$template = str_replace( 'woocommerce-pagination', 'lsx-pagination', $template );
822
	echo wp_kses_post( $template );
823
	echo wp_kses_post( '</div>' );
824
}
825
826
function lsx_wc_pagination_args( $args ) {
827
	$args['prev_text'] = '<span class="meta-nav">&larr;</span> ' . esc_html__( 'Previous', 'lsx' );
828
	$args['next_text'] = esc_html__( 'Next', 'lsx' ) . ' <span class="meta-nav">&rarr;</span>';
829
	$args['type']	   = 'plain';
830
	return $args;
831
}
832
add_filter( 'woocommerce_pagination_args', 'lsx_wc_pagination_args',10 ,1 );
833
834
835
/**
836
 * Returns the location of our product widget
837
 * @param $located
838
 * @param $template_name
839
 *
840
 * @return array
841
 */
842
function lsx_wc_product_widget_template( $located, $template_name ) {
843
	if ( 'content-widget-product.php' === $template_name || 'content-widget-review.php' === $template_name ) {
844
845
		$new_location = get_stylesheet_directory() . '/partials/' . $template_name;
846
		if ( file_exists( $new_location ) ) {
847
			$located = $new_location;
848
		} else {
849
			$new_location = get_parent_theme_file_path() . '/partials/' . $template_name;
850
			if ( file_exists( $new_location ) ) {
851
				$located = $new_location;
852
			}
853
		}
854
	}
855
	return $located;
856
}
857
add_filter( 'wc_get_template', 'lsx_wc_product_widget_template',90 ,2 );
858