Passed
Pull Request — master (#351)
by Virginia
02:13
created

woocommerce.php ➔ lsx_payment_gateway_logos()   A

Complexity

Conditions 4
Paths 2

Size

Total Lines 25

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
nc 2
nop 0
dl 0
loc 25
rs 9.52
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
if ( ! function_exists( 'lsx_wc_scripts_add_styles' ) ) :
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_checkout_cart_title' ) ) :
53
54
	/**
55
	 * Add title to Woocommerce Cart page anc Checkout page.
56
	 *
57
	 * @package    lsx
58
	 * @subpackage woocommerce
59
	 */
60
	function lsx_wc_checkout_cart_title() {
61
		$default_size = 'sm';
62
		$size         = apply_filters( 'lsx_bootstrap_column_size', $default_size );
63
		if ( function_exists( 'is_woocommerce' ) && ( is_checkout() || is_cart() ) ) {
64
			?>
65
			<div class="checkout-header-wrapper cart-checkout-page col-<?php echo esc_attr( $size ); ?>-12">
66
				<h1 class="archive-title"><?php the_title(); ?></h1>
67
			</div>
68
			<?php
69
		}
70
	}
71
72
	add_action( 'lsx_entry_inside_top', 'lsx_wc_checkout_cart_title' );
73
74
endif;
75
76
if ( ! function_exists( 'lsx_simple_checkout' ) ) :
77
78
	/**
79
	 * Remove footer widgets to make Checkout and Cart simpler.
80
	 *
81
	 * @package    lsx
82
	 * @subpackage config
83
	 */
84
	function lsx_simple_checkout() {
85
86
		if ( class_exists( 'WooCommerce' ) ) {
87
			if ( is_checkout() || is_cart() ) {
88
				remove_action( 'lsx_footer_before', 'lsx_add_footer_sidebar_area' );
89
			}
90
		}
91
	}
92
93
	add_action( 'wp_head', 'lsx_simple_checkout' );
94
95
endif;
96
97
if ( ! function_exists( 'lsx_wc_form_field_args' ) ) :
98
99
	/**
100
	 * WooCommerce form fields.
101
	 *
102
	 * @package    lsx
103
	 * @subpackage woocommerce
104
	 */
105
	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...
106
		$args['input_class'][] = 'form-control';
107
108
		return $args;
109
	}
110
111
	add_action( 'woocommerce_form_field_args', 'lsx_wc_form_field_args', 10, 3 );
112
113
endif;
114
115 View Code Duplication
if ( ! function_exists( 'lsx_wc_theme_wrapper_start' ) ) :
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...
116
117
	/**
118
	 * WooCommerce wrapper start.
119
	 *
120
	 * @package    lsx
121
	 * @subpackage woocommerce
122
	 */
123
	function lsx_wc_theme_wrapper_start() {
124
		lsx_content_wrap_before();
125
		echo '<div id="primary" class="content-area ' . esc_attr( lsx_main_class() ) . '">';
126
		lsx_content_before();
127
		echo '<main id="main" class="site-main" role="main">';
128
		lsx_content_top();
129
	}
130
131
	remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 );
132
	add_action( 'woocommerce_before_main_content', 'lsx_wc_theme_wrapper_start' );
133
134
endif;
135
136 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...
137
138
	/**
139
	 * WooCommerce wrapper end.
140
	 *
141
	 * @package    lsx
142
	 * @subpackage woocommerce
143
	 */
144
	function lsx_wc_theme_wrapper_end() {
145
		lsx_content_bottom();
146
		echo '</main>';
147
		lsx_content_after();
148
		echo '</div>';
149
		lsx_content_wrap_after();
150
	}
151
152
	remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10 );
153
	add_action( 'woocommerce_after_main_content', 'lsx_wc_theme_wrapper_end' );
154
155
endif;
156
157
if ( ! function_exists( 'lsx_wc_disable_lsx_banner_plugin' ) ) :
158
159
	/**
160
	 * Disable LSX Banners plugin in some WC pages.
161
	 *
162
	 * @package    lsx
163
	 * @subpackage woocommerce
164
	 */
165
	function lsx_wc_disable_lsx_banner_plugin( $disabled ) {
166
		global $post;
167
168
		if ( $post && class_exists( 'WC_Wishlists_Pages' ) && WC_Wishlists_Pages::is_wishlist_page( $post->post_name ) ) {
169
			$disabled = true;
170
		}
171
172
		return $disabled;
173
	}
174
175
	add_filter( 'lsx_banner_plugin_disable', 'lsx_wc_disable_lsx_banner_plugin' );
176
177
endif;
178
179
if ( ! function_exists( 'lsx_wc_disable_lsx_banner' ) ) :
180
181
	/**
182
	 * Disable LSX Banners banner in some WC pages.
183
	 *
184
	 * @package    lsx
185
	 * @subpackage woocommerce
186
	 */
187
	function lsx_wc_disable_lsx_banner( $disabled ) {
188
		if ( is_shop() || is_product_category() || is_product_tag() || is_product() ) {
189
			$disabled = true;
190
		}
191
192
		return $disabled;
193
	}
194
195
	add_filter( 'lsx_banner_disable', 'lsx_wc_disable_lsx_banner' );
196
197
endif;
198
199
if ( ! function_exists( 'lsx_wc_categories_breadcrumb_filter' ) ) :
200
	/**
201
	 * Improves the category and taxonomy breadcrumbs for woocommerce.
202
	 *
203
	 * @package    lsx
204
	 * @subpackage woocommerce
205
	 */
206
	function lsx_wc_categories_breadcrumb_filter( $crumbs ) {
207
208
		$shop_page_url = get_permalink( wc_get_page_id( 'shop' ) );
209
210
		if ( is_product_category() || is_product_tag() ) {
211
			$new_crumbs    = array();
212
			$new_crumbs[0] = $crumbs[0];
213
214
			if ( function_exists( 'woocommerce_breadcrumb' ) ) {
215
				$new_crumbs[1] = array(
216
					0 => __( 'Shop', 'lsx' ),
217
					1 => $shop_page_url,
218
				);
219
			} else {
220
				$new_crumbs[1] = array(
221
					'text' => __( 'Shop', 'lsx' ),
222
					'url'  => $shop_page_url,
223
				);
224
			}
225
226
			$new_crumbs[2] = $crumbs[1];
227
228
			$crumbs = $new_crumbs;
229
		}
230
		return $crumbs;
231
	}
232
	add_filter( 'wpseo_breadcrumb_links', 'lsx_wc_categories_breadcrumb_filter', 30, 1 );
233
	add_filter( 'woocommerce_get_breadcrumb', 'lsx_wc_categories_breadcrumb_filter', 30, 1 );
234
235
endif;
236
237
if ( ! function_exists( 'lsx_wc_add_cart' ) ) :
238
239
	/**
240
	 * Adds WC cart to the header.
241
	 *
242
	 * @package    lsx
243
	 * @subpackage template-tags
244
	 */
245
	function lsx_wc_add_cart( $items, $args ) {
246
		$cart_menu_item_position = apply_filters( 'lsx_wc_cart_menu_item_position', 'primary' );
247
248
		$cart_logged_out_position = $cart_menu_item_position . '_logged_out';
249
250
		if ( $cart_menu_item_position === $args->theme_location || $cart_logged_out_position === $args->theme_location ) {
251
			$customizer_option = get_theme_mod( 'lsx_header_wc_cart', false );
252
253
			if ( ! empty( $customizer_option ) ) {
254
				ob_start();
255
				the_widget( 'WC_Widget_Cart', 'title=' );
256
				$widget = ob_get_clean();
257
258
				if ( is_cart() ) {
259
					$class = 'current-menu-item';
260
				} else {
261
					$class = '';
262
				}
263
264
				$item_class = 'menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children dropdown lsx-wc-cart-menu-item ' . $class;
265
				$item_class = apply_filters( 'lsx_wc_cart_menu_item_class', $item_class );
266
267
				$item = '<li class="' . $item_class . '">' .
268
							'<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">' .
269
								'<span class="lsx-wc-cart-amount">' . wp_kses_data( WC()->cart->get_cart_subtotal() ) . '</span>' .
270
								/* Translators: %s: items quantity */
271
								'<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>' .
272
								( ! empty( WC()->cart->get_cart_contents_count() ) ? '<span class="lsx-wc-cart-count-badge">' . wp_kses_data( WC()->cart->get_cart_contents_count() ) . '</span>' : '' ) .
273
							'</a>' .
274
							'<ul role="menu" class=" dropdown-menu lsx-wc-cart-sub-menu">' .
275
								'<li>' .
276
									'<div class="lsx-wc-cart-dropdown">' . $widget . '</div>' .
277
								'</li>' .
278
							'</ul>' .
279
						'</li>';
280
281
				if ( 'top-menu' === $args->theme_location ) {
282
					$items = $item . $items;
283
				} else {
284
					$items = $items . $item;
285
				}
286
			}
287
		}
288
289
		return $items;
290
	}
291
292
	add_filter( 'wp_nav_menu_items', 'lsx_wc_add_cart', 10, 2 );
293
294
endif;
295
296
if ( ! function_exists( 'lsx_wc_products_widget_wrapper_before' ) ) :
297
298
	/**
299
	 * Change WC products widget wrapper (before).
300
	 *
301
	 * @package    lsx
302
	 * @subpackage woocommerce
303
	 */
304
	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...
305
		$html = '<div class="lsx-woocommerce-slider lsx-woocommerce-shortcode">';
306
		return $html;
307
	}
308
309
	add_filter( 'woocommerce_before_widget_product_list', 'lsx_wc_products_widget_wrapper_before', 15 );
310
311
endif;
312
313
if ( ! function_exists( 'lsx_wc_products_widget_wrapper_after' ) ) :
314
315
	/**
316
	 * Change WC products widget wrapper (after).
317
	 *
318
	 * @package    lsx
319
	 * @subpackage woocommerce
320
	 */
321
	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...
322
		$html = '</div>';
323
		return $html;
324
	}
325
326
	add_filter( 'woocommerce_after_widget_product_list', 'lsx_wc_products_widget_wrapper_after', 15 );
327
328
endif;
329
330
if ( ! function_exists( 'lsx_wc_reviews_widget_override' ) ) :
331
332
	/**
333
	 * Override WC ewviews widget.
334
	 *
335
	 * @package    lsx
336
	 * @subpackage woocommerce
337
	 */
338
	function lsx_wc_reviews_widget_override() {
339
		if ( class_exists( 'WC_Widget_Recent_Reviews' ) ) {
340
			unregister_widget( 'WC_Widget_Recent_Reviews' );
341
			require get_template_directory() . '/includes/classes/class-lsx-wc-widget-recent-reviews.php';
342
			register_widget( 'LSX_WC_Widget_Recent_Reviews' );
343
		}
344
	}
345
346
	add_action( 'widgets_init', 'lsx_wc_reviews_widget_override', 15 );
347
348
endif;
349
350
if ( ! function_exists( 'lsx_wc_change_price_html' ) ) :
351
352
	/**
353
	 * Change WC ZERO price to "free".
354
	 *
355
	 * @package    lsx
356
	 * @subpackage woocommerce
357
	 *
358
	 * @param $price string
359
	 * @param $product WC_Product
360
	 * @return string
361
	 */
362
	function lsx_wc_change_price_html( $price, $product ) {
363
		if ( empty( $product->get_price() ) ) {
364
			if ( $product->is_on_sale() && $product->get_regular_price() ) {
365
				$regular_price = wc_get_price_to_display( $product,
366
					array(
367
						'qty'   => 1,
368
						'price' => $product->get_regular_price(),
369
					)
370
				);
371
372
				$price = wc_format_price_range( $regular_price, esc_html__( 'Free!', 'lsx' ) );
373
			} else {
374
				$price = '<span class="amount">' . esc_html__( 'Free!', 'lsx' ) . '</span>';
375
			}
376
		}
377
378
		return $price;
379
	}
380
381
	add_filter( 'woocommerce_get_price_html', 'lsx_wc_change_price_html', 15, 2 );
382
383
endif;
384
385
if ( ! function_exists( 'lsx_wc_cart_link_fragment' ) ) :
386
387
	/**
388
	 * Cart Fragments.
389
	 * Ensure cart contents update when products are added to the cart via AJAX.
390
	 *
391
	 * @package    lsx
392
	 * @subpackage woocommerce
393
	 */
394
	function lsx_wc_cart_link_fragment( $fragments ) {
395
		global $woocommerce;
396
397
		ob_start();
398
		lsx_wc_cart_link();
399
		$fragments['li.lsx-wc-cart-menu-item > a'] = ob_get_clean();
400
401
		ob_start();
402
		lsx_wc_items_counter();
403
		$items_counter = ob_get_clean();
404
405
		if ( ! empty( $items_counter ) ) {
406
			$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'] );
407
		}
408
409
		return $fragments;
410
	}
411
412
endif;
413
414
if ( ! function_exists( 'lsx_wc_cart_link' ) ) :
415
416
	/**
417
	 * Cart Link.
418
	 * Displayed a link to the cart including the number of items present and the cart total.
419
	 *
420
	 * @package    lsx
421
	 * @subpackage woocommerce
422
	 */
423
	function lsx_wc_cart_link() {
424
		?>
425
			<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">
426
				<span class="lsx-wc-cart-amount"><?php echo wp_kses_data( WC()->cart->get_cart_subtotal() ); ?></span>
427
428
				<?php /* Translators: %s: items quantity */ ?>
429
				<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>
430
431
				<?php if ( ! empty( WC()->cart->get_cart_contents_count() ) ) : ?>
432
					<span class="lsx-wc-cart-count-badge"><?php echo wp_kses_data( WC()->cart->get_cart_contents_count() ); ?></span>
433
				<?php endif; ?>
434
			</a>
435
		<?php
436
	}
437
438
endif;
439
440
if ( ! function_exists( 'lsx_wc_items_counter' ) ) :
441
442
	/**
443
	 * Add car item hidden items counter.
444
	 *
445
	 * @package    lsx
446
	 * @subpackage woocommerce
447
	 */
448
	function lsx_wc_items_counter() {
449
		$count         = (int) WC()->cart->get_cart_contents_count();
450
		$items_counter = '';
451
452
		if ( ! empty( $count ) ) {
453
			$count -= 3;
454
455
			if ( 1 === $count ) {
456
				$items_counter = esc_html__( '1 other item in cart', 'lsx' );
457
			} elseif ( $count > 1 ) {
458
				/* Translators: %s: items counter */
459
				$items_counter = sprintf( esc_html__( '%s other items in cart', 'lsx' ), $count );
460
			}
461
		}
462
		$cart_url = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : WC()->cart->get_cart_url();
463
		if ( ! empty( $items_counter ) ) :
464
			?>
465
				<li class="woocommerce-mini-cart-item mini_cart_item" style="display: block;">
466
					<a href="<?php echo esc_url( $cart_url ); ?>"><?php echo esc_html( $items_counter ); ?></a>
467
				</li>
468
			<?php
469
		endif;
470
	}
471
472
endif;
473
474
if ( ! function_exists( 'lsx_wc_loop_shop_per_page' ) ) :
475
476
	/**
477
	 * Changes the number of products to display on shop.
478
	 *
479
	 * @package    lsx
480
	 * @subpackage woocommerce
481
	 */
482
	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...
483
		$items = 12;
484
		return $items;
485
	}
486
487
	add_filter( 'loop_shop_per_page', 'lsx_wc_loop_shop_per_page', 20 );
488
489
endif;
490
491
if ( ! function_exists( 'lsx_wc_add_to_cart_message_html' ) ) :
492
493
	/**
494
	 * Changes the "added to cart" message HTML.
495
	 *
496
	 * @package    lsx
497
	 * @subpackage woocommerce
498
	 */
499
	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...
500
		$message = '<div class="woocommerce-message-added-to-cart">' . $message . '</div>';
501
		return $message;
502
	}
503
504
	add_filter( 'wc_add_to_cart_message_html', 'lsx_wc_add_to_cart_message_html', 20, 2 );
505
506
endif;
507
508
if ( defined( 'WC_VERSION' ) && version_compare( WC_VERSION, '2.3', '>=' ) ) {
509
	add_filter( 'woocommerce_add_to_cart_fragments', 'lsx_wc_cart_link_fragment' );
510
} else {
511
	add_filter( 'add_to_cart_fragments', 'lsx_wc_cart_link_fragment' );
512
}
513
514
remove_action( 'woocommerce_after_shop_loop', 'woocommerce_pagination', 10 );
515
516
add_action( 'woocommerce_after_shop_loop', 'lsx_wc_sorting_wrapper', 9 );
517
add_action( 'woocommerce_after_shop_loop', 'woocommerce_catalog_ordering', 10 );
518
add_action( 'woocommerce_after_shop_loop', 'woocommerce_result_count', 20 );
519
add_action( 'woocommerce_after_shop_loop', 'woocommerce_pagination', 30 );
520
add_action( 'woocommerce_after_shop_loop', 'lsx_wc_sorting_wrapper_close', 31 );
521
522
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
523
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );
524
525
add_action( 'woocommerce_before_shop_loop', 'lsx_wc_sorting_wrapper', 9 );
526
add_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 10 );
527
add_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
528
add_action( 'woocommerce_before_shop_loop', 'lsx_wc_woocommerce_pagination', 30 );
529
add_action( 'woocommerce_before_shop_loop', 'lsx_wc_sorting_wrapper_close', 31 );
530
531
if ( ! function_exists( 'lsx_wc_sorting_wrapper' ) ) :
532
533
	/**
534
	 * Sorting wrapper.
535
	 *
536
	 * @package    lsx
537
	 * @subpackage woocommerce
538
	 */
539
	function lsx_wc_sorting_wrapper() {
540
		echo '<div class="lsx-wc-sorting">';
541
	}
542
543
endif;
544
545
if ( ! function_exists( 'lsx_wc_sorting_wrapper_close' ) ) :
546
547
	/**
548
	 * Sorting wrapper close.
549
	 *
550
	 * @package    lsx
551
	 * @subpackage woocommerce
552
	 */
553
	function lsx_wc_sorting_wrapper_close() {
554
		echo '</div>';
555
	}
556
557
endif;
558
559
if ( ! function_exists( 'lsx_wc_product_columns_wrapper_close' ) ) :
560
561
	/**
562
	 * Product columns wrapper close.
563
	 *
564
	 * @package    lsx
565
	 * @subpackage woocommerce
566
	 */
567
	function lsx_wc_product_columns_wrapper_close() {
568
		echo '</div>';
569
	}
570
571
endif;
572
573
if ( ! function_exists( 'lsx_wc_woocommerce_pagination' ) ) :
574
575
	/**
576
	 * LSX WooCommerce Pagination
577
	 * WooCommerce disables the product pagination inside the woocommerce_product_subcategories() function
578
	 * but since LSX adds pagination before that function is excuted we need a separate function to
579
	 * determine whether or not to display the pagination.
580
	 *
581
	 * @package    lsx
582
	 * @subpackage woocommerce
583
	 */
584
	function lsx_wc_woocommerce_pagination() {
585
		if ( woocommerce_products_will_display() ) {
586
			woocommerce_pagination();
587
		}
588
	}
589
590
endif;
591
592
if ( ! function_exists( 'lsx_customizer_wc_controls' ) ) :
593
594
	/**
595
	 * Returns an array of the core panel.
596
	 *
597
	 * @package    lsx
598
	 * @subpackage customizer
599
	 *
600
	 * @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...
601
	 */
602
	function lsx_customizer_wc_controls( $lsx_controls ) {
603
		$lsx_controls['panels']['lsx-wc'] = array(
604
			'title'       => esc_html__( 'WooCommerce', 'lsx' ),
605
			'description' => esc_html__( 'Change the WooCommerce settings.', 'lsx' ),
606
			'priority'    => 23,
607
		);
608
609
		/**
610
		 * Global.
611
		 */
612
613
		$lsx_controls['sections']['lsx-wc-global'] = array(
614
			'title'       => esc_html__( 'Global', 'lsx' ),
615
			'description' => esc_html__( 'Change the WooCommerce global settings.', 'lsx' ),
616
			'panel'       => 'lsx-wc',
617
			'priority'    => 1,
618
		);
619
620
		$lsx_controls['settings']['lsx_wc_trust_footer_bar_status'] = array(
621
			'default'           => '1',
622
			'sanitize_callback' => 'lsx_sanitize_checkbox',
623
		);
624
625
		$lsx_controls['fields']['lsx_wc_trust_footer_bar_status'] = array(
626
			'label'       => esc_html__( 'Footer Trust Factors Section', 'lsx' ),
627
			'description' => esc_html__( 'Enable the footer trust factors section.', 'lsx' ),
628
			'section'     => 'lsx-wc-global',
629
			'type'        => 'checkbox',
630
			'priority'    => 1,
631
		);
632
633
		$lsx_controls['settings']['lsx_wc_mobile_footer_bar_status'] = array(
634
			'default'           => '1',
635
			'sanitize_callback' => 'lsx_sanitize_checkbox',
636
		);
637
638
		$lsx_controls['fields']['lsx_wc_mobile_footer_bar_status'] = array(
639
			'label'       => esc_html__( 'Footer Bar', 'lsx' ),
640
			'description' => esc_html__( 'Enable the mobile footer bar.', 'lsx' ),
641
			'section'     => 'lsx-wc-global',
642
			'type'        => 'checkbox',
643
			'priority'    => 1,
644
		);
645
646
		/**
647
		 * Cart.
648
		 */
649
650
		$lsx_controls['sections']['lsx-wc-cart'] = array(
651
			'title'       => esc_html__( 'Cart', 'lsx' ),
652
			'description' => esc_html__( 'Change the WooCommerce cart settings.', 'lsx' ),
653
			'panel'       => 'lsx-wc',
654
			'priority'    => 2,
655
		);
656
657
		$lsx_controls['settings']['lsx_header_wc_cart'] = array(
658
			'default'           => false,
659
			'sanitize_callback' => 'lsx_sanitize_checkbox',
660
		);
661
662
		$lsx_controls['fields']['lsx_header_wc_cart'] = array(
663
			'label'       => esc_html__( 'Menu Item', 'lsx' ),
664
			'description' => esc_html__( 'Enable the cart menu item.', 'lsx' ),
665
			'section'     => 'lsx-wc-cart',
666
			'type'        => 'checkbox',
667
			'priority'    => 1,
668
		);
669
670
		return $lsx_controls;
671
	}
672
673
	add_filter( 'lsx_customizer_controls', 'lsx_customizer_wc_controls' );
674
675
endif;
676
677
if ( ! function_exists( 'lsx_wc_global_header_title' ) ) :
678
679
	/**
680
	 * Move the shop title into the global header
681
	 *
682
	 * @package    lsx
683
	 * @subpackage the-events-calendar
684
	 */
685
	function lsx_wc_global_header_title( $title ) {
686
687
		if ( is_woocommerce() && is_shop() ) {
688
689
			$title = __( 'Shop', 'lsx' );
690
		}
691
692
		return $title;
693
	}
694
	add_filter( 'lsx_global_header_title', 'lsx_wc_global_header_title', 200, 1 );
695
696
endif;
697
698
699
if ( ! function_exists( 'lsx_wc_footer_bar' ) ) :
700
701
	/**
702
	 * Display WC footer bar.
703
	 *
704
	 * @package    lsx
705
	 * @subpackage woocommerce
706
	 */
707
	function lsx_wc_footer_bar() {
708
		$cart_url = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : WC()->cart->get_cart_url();
709
		if ( ! empty( get_theme_mod( 'lsx_wc_mobile_footer_bar_status', '1' ) ) ) :
710
			?>
711
			<div class="lsx-wc-footer-bar">
712
				<form role="search" method="get" action="<?php echo esc_url( home_url() ); ?>" class="lsx-wc-footer-bar-form">
713
					<fieldset>
714
						<legend class="screen-reader-text"><?php esc_html_e( 'Search products', 'lsx' ); ?></legend>
715
						<input type="search" name="s" placeholder="<?php esc_attr_e( 'Search products...', 'lsx' ); ?>" class="form-control">
716
					</fieldset>
717
				</form>
718
719
				<ul class="lsx-wc-footer-bar-items">
720
					<li class="lsx-wc-footer-bar-item">
721
						<a href="<?php echo esc_url( home_url() ); ?>" class="lsx-wc-footer-bar-link">
722
							<i class="fa fa-home" aria-hidden="true"></i>
723
							<span><?php esc_html_e( 'Home', 'lsx' ); ?></span>
724
						</a>
725
					</li>
726
727
					<li class="lsx-wc-footer-bar-item">
728
						<a href="<?php echo esc_url( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) ); ?>" class="lsx-wc-footer-bar-link">
729
							<i class="fa fa-user" aria-hidden="true"></i>
730
							<span><?php esc_html_e( 'Account', 'lsx' ); ?></span>
731
						</a>
732
					</li>
733
734
					<li class="lsx-wc-footer-bar-item">
735
						<a href="#" class="lsx-wc-footer-bar-link lsx-wc-footer-bar-link-toogle">
736
							<i class="fa fa-search" aria-hidden="true"></i>
737
							<span><?php esc_html_e( 'Search', 'lsx' ); ?></span>
738
						</a>
739
					</li>
740
741
					<li class="lsx-wc-footer-bar-item">
742
						<a href="<?php echo esc_url( $cart_url ); ?>" class="lsx-wc-footer-bar-link">
743
							<i class="fa fa-shopping-basket" aria-hidden="true"></i>
744
							<?php $count = WC()->cart->get_cart_contents_count(); ?>
745
							<?php if ( ! empty( $count ) ) : ?>
746
								<span class="lsx-wc-footer-bar-count"><?php echo wp_kses_data( $count ); ?></span>
747
							<?php endif; ?>
748
							<span><?php esc_html_e( 'Cart', 'lsx' ); ?></span>
749
						</a>
750
					</li>
751
				</ul>
752
			</div>
753
			<?php
754
		endif;
755
	}
756
757
	add_action( 'lsx_body_bottom', 'lsx_wc_footer_bar', 15 );
758
759
endif;
760
761
if ( ! function_exists( 'lsx_wc_body_class' ) ) :
762
763
	/**
764
	 * Changes body class.
765
	 *
766
	 * @package    lsx
767
	 * @subpackage woocommerce
768
	 */
769
	function lsx_wc_body_class( $classes ) {
770
		global $post;
771
772
		if ( $post && class_exists( 'WC_Wishlists_Pages' ) && WC_Wishlists_Pages::is_wishlist_page( $post->post_name ) ) {
773
			$classes[] = 'woocommerce-page woocommerce-wishlist';
774
		}
775
776
		if ( ! empty( get_theme_mod( 'lsx_wc_mobile_footer_bar_status', '1' ) ) ) {
777
			$classes[] = 'lsx-wc-has-footer-bar';
778
		}
779
780
		return $classes;
781
	}
782
783
	add_filter( 'body_class', 'lsx_wc_body_class', 2999 );
784
785
endif;
786
787
if ( ! function_exists( 'lsx_wc_downloadable_products' ) ) :
788
789
	/**
790
	 * Changes downloads "download" button text.
791
	 *
792
	 * @package    lsx
793
	 * @subpackage woocommerce
794
	 */
795
	function lsx_wc_downloadable_products( $downloads ) {
796
		foreach ( $downloads as $i => $download ) {
797
			$downloads[ $i ]['download_name'] = esc_html__( 'Download', 'lsx' );
798
		}
799
800
		return $downloads;
801
	}
802
803
	add_filter( 'woocommerce_customer_get_downloadable_products', 'lsx_wc_downloadable_products', 2999 );
804
805
endif;
806
807
if ( ! function_exists( 'lsx_wc_move_bundle_products' ) ) :
808
809
	/**
810
	 * WooCommerce - Move the bundle products to a tab.
811
	 *
812
	 * @package    lsx
813
	 * @subpackage woocommerce
814
	 */
815
	function lsx_wc_move_bundle_products( $tabs ) {
816
		global $product, $post;
817
818
		if ( method_exists( $product, 'get_bundled_items' ) ) {
819
			$bundled_items = $product->get_bundled_items();
820
821
			if ( ! empty( $bundled_items ) ) {
822
				$tabs['bundled_products'] = array(
823
					'title'    => __( 'Included Products', 'lsx' ),
824
					'priority' => 10,
825
					'callback' => 'lsx_wc_bundle_products',
826
				);
827
			}
828
		}
829
830
		if ( isset( $tabs['description'] ) ) {
831
			$tabs['description']['priority'] = 5;
832
		}
833
834
		if ( isset( $tabs['reviews'] ) ) {
835
			$tabs['reviews']['priority'] = 15;
836
		}
837
838
		if ( isset( $tabs['product_enquiry'] ) ) {
839
			$tabs['product_enquiry']['priority'] = 20;
840
		}
841
842
		return $tabs;
843
	}
844
845
	add_action( 'woocommerce_product_tabs', 'lsx_wc_move_bundle_products', 50 );
846
847
endif;
848
849
if ( ! function_exists( 'lsx_wc_bundle_products' ) ) :
850
851
	function lsx_wc_bundle_products() {
852
		global $product, $post;
853
854
		if ( method_exists( $product, 'get_bundled_items' ) ) {
855
			$bundled_items = $product->get_bundled_items();
856
857
			// do_action( 'woocommerce_before_bundled_items', $product );
858
859
			// foreach ( $bundled_items as $bundled_item ) {
860
			// 	do_action( 'woocommerce_bundled_item_details', $bundled_item, $product );
861
			// }
862
863
			// do_action( 'woocommerce_after_bundled_items', $product );
864
865
			$product_original = $product;
866
867
			// $this->widget_start( $args, $instance );
868
869
			// @codingStandardsIgnoreLine
870
			echo apply_filters( 'woocommerce_before_widget_product_list', '<ul class="product_list_widget">' );
871
872
			foreach ( $bundled_items as $bundled_item ) {
873
				$product = wc_get_product( $bundled_item->item_data['product_id'] );
874
				wc_get_template( 'content-widget-product.php' );
875
				$product = $product_original;
876
			}
877
878
			// @codingStandardsIgnoreLine
879
			echo apply_filters( 'woocommerce_after_widget_product_list', '</ul>' );
880
		}
881
882
		// $this->widget_end( $args );
883
	}
884
885
endif;
886
887
888
if ( ! function_exists( 'lsx_wc_product_searchform' ) ) :
889
	/**
890
	 * woo_custom_product_searchform
891
	 *
892
	 * @access      public
893
	 * @since       1.0
894
	 * @return      void
895
	 */
896
	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...
897
898
		$form = '
899
			<form role="search" method="get" class="search-form form-inline" id="searchform" action="<?php echo esc_url( home_url( \'/\' ) ); ?>">
900
				<div class="input-group">
901
					<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\' ) ); ?>">
902
					<label class="hide"><?php esc_attr_e( \'Search for:\', \'lsx\' ); ?></label>
903
904
					<span class="input-group-btn">
905
						<button type="submit" class="search-submit btn btn-default"><span class="fa fa-search"></span></button>
906
					</span>
907
				</div>
908
909
				<input type="hidden" name="post_type" value="product" />
910
			</form>
911
		';
912
913
		return $form;
914
915
	}
916
endif;
917
add_filter( 'get_product_search_form', 'lsx_wc_product_searchform', 10, 1 );
918
919
	/**
920
	 * Output the pagination.
921
	 */
922
function woocommerce_pagination() {
923
	if ( ! wc_get_loop_prop( 'is_paginated' ) || ! woocommerce_products_will_display() ) {
924
		return;
925
	}
926
	$args = array(
927
		'total'   => wc_get_loop_prop( 'total_pages' ),
928
		'current' => wc_get_loop_prop( 'current_page' ),
929
	);
930
931
	if ( wc_get_loop_prop( 'is_shortcode' ) ) {
932
		$args['base']   = esc_url_raw( add_query_arg( 'product-page', '%#%', false ) );
933
		$args['format'] = '?product-page = %#%';
934
	} else {
935
		$args['base']   = esc_url_raw( str_replace( 999999999, '%#%', remove_query_arg( 'add-to-cart', get_pagenum_link( 999999999, false ) ) ) );
936
		$args['format'] = '';
937
	}
938
939
	echo wp_kses_post( '<div class="lsx-pagination-wrapper">' );
940
	$template = wc_get_template_html( 'loop/pagination.php', $args );
941
	$template = str_replace( 'woocommerce-pagination', 'lsx-pagination', $template );
942
	echo wp_kses_post( $template );
943
	echo wp_kses_post( '</div>' );
944
}
945
946
function lsx_wc_pagination_args( $args ) {
947
	$args['prev_text'] = '<span class="meta-nav">&larr;</span> ' . esc_html__( 'Previous', 'lsx' );
948
	$args['next_text'] = esc_html__( 'Next', 'lsx' ) . ' <span class="meta-nav">&rarr;</span>';
949
	$args['type']      = 'plain';
950
	return $args;
951
}
952
add_filter( 'woocommerce_pagination_args', 'lsx_wc_pagination_args', 10, 1 );
953
954
955
/**
956
 * Returns the location of our product widget
957
 *
958
 * @param $located
959
 * @param $template_name
960
 *
961
 * @return array
962
 */
963
function lsx_wc_product_widget_template( $located, $template_name ) {
964
	if ( 'content-widget-product.php' === $template_name || 'content-widget-review.php' === $template_name ) {
965
966
		$new_location = get_stylesheet_directory() . '/partials/' . $template_name;
967
		if ( file_exists( $new_location ) ) {
968
			$located = $new_location;
969
		} else {
970
			$new_location = get_parent_theme_file_path() . '/partials/' . $template_name;
971
			if ( file_exists( $new_location ) ) {
972
				$located = $new_location;
973
			}
974
		}
975
	}
976
	return $located;
977
}
978
add_filter( 'wc_get_template', 'lsx_wc_product_widget_template', 90, 2 );
979
980
if ( ! function_exists( 'lsx_payment_gateway_logos' ) ) {
981
	/**
982
	 * Add Lets Encrypt and PayFast logos to cart.
983
	 **/
984
	function lsx_payment_gateway_logos() {
985
		$encript_image        = get_template_directory_uri() . '/assets/images/lets-encript.svg';
986
		$payfast_image        = get_template_directory_uri() . '/assets/images/payfast-footer-logo.svg';
987
		$payment_logos        = get_template_directory_uri() . '/assets/images/payment-logos.svg';
988
		$payment_logos_mobile = get_template_directory_uri() . '/assets/images/payment-logos-mobile.svg';
989
		if ( ( is_checkout() || is_cart() ) && ( ! empty( get_theme_mod( 'lsx_wc_trust_footer_bar_status', '1' ) ) ) ) {
990
		?>
991
		<div class="row text-center vertical-align lsx-full-width-base-small checkout-cta-bottom">
992
			<div class="col-md-12 img-payfast">
993
				<img src="<?php echo esc_url( $payfast_image ); ?>" alt="payfast"/>
994
			</div>
995
			<div class="col-md-12 img-payments hidden-xs">
996
				<img src="<?php echo esc_url( $payment_logos ); ?>" alt="payments"/>
997
			</div>
998
			<div class="col-md-12 img-payments hidden-sm hidden-md hidden-lg">
999
				<img src="<?php echo esc_url( $payment_logos_mobile ); ?>" alt="payments"/>
1000
			</div>
1001
			<div class="col-md-12 img-encrypt">
1002
				<img src="<?php echo esc_url( $encript_image ); ?>" alt="lets_encrypt"/>
1003
			</div>
1004
		</div>
1005
1006
		<?php
1007
		}
1008
	}
1009
	include_once ABSPATH . 'wp-admin/includes/plugin.php';
1010
1011
	// check for plugin using plugin name.
1012
	if ( ! is_plugin_active( 'lsx-health-plan/lsx-health-plan.php' ) ) {
1013
		add_action( 'lsx_footer_before', 'lsx_payment_gateway_logos' );
1014
	}
1015
}
1016