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 ) { |
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
|
|
|
if ( ! function_exists( 'lsx_wc_theme_wrapper_start' ) ) : |
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
|
|
|
if ( ! function_exists( 'lsx_wc_theme_wrapper_end' ) ) : |
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 ) { |
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 ) { |
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() ) && 'variable' !== $product->get_type() ) { |
364
|
|
|
if ( $product->is_on_sale() && $product->get_regular_price() ) { |
365
|
|
|
$regular_price = wc_get_price_to_display( |
366
|
|
|
$product, |
367
|
|
|
array( |
368
|
|
|
'qty' => 1, |
369
|
|
|
'price' => $product->get_regular_price(), |
370
|
|
|
) |
371
|
|
|
); |
372
|
|
|
|
373
|
|
|
$price = wc_format_price_range( $regular_price, esc_html__( 'Free!', 'lsx' ) ); |
374
|
|
|
} else { |
375
|
|
|
$price = '<span class="amount">' . esc_html__( 'Free!', 'lsx' ) . '</span>'; |
376
|
|
|
} |
377
|
|
|
} |
378
|
|
|
|
379
|
|
|
return $price; |
380
|
|
|
} |
381
|
|
|
|
382
|
|
|
add_filter( 'woocommerce_get_price_html', 'lsx_wc_change_price_html', 15, 2 ); |
383
|
|
|
|
384
|
|
|
endif; |
385
|
|
|
|
386
|
|
|
if ( ! function_exists( 'lsx_wc_cart_link_fragment' ) ) : |
387
|
|
|
|
388
|
|
|
/** |
389
|
|
|
* Cart Fragments. |
390
|
|
|
* Ensure cart contents update when products are added to the cart via AJAX. |
391
|
|
|
* |
392
|
|
|
* @package lsx |
393
|
|
|
* @subpackage woocommerce |
394
|
|
|
*/ |
395
|
|
|
function lsx_wc_cart_link_fragment( $fragments ) { |
396
|
|
|
global $woocommerce; |
397
|
|
|
|
398
|
|
|
ob_start(); |
399
|
|
|
lsx_wc_cart_link(); |
400
|
|
|
$fragments['li.lsx-wc-cart-menu-item > a'] = ob_get_clean(); |
401
|
|
|
|
402
|
|
|
ob_start(); |
403
|
|
|
lsx_wc_items_counter(); |
404
|
|
|
$items_counter = ob_get_clean(); |
405
|
|
|
|
406
|
|
|
if ( ! empty( $items_counter ) ) { |
407
|
|
|
$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'] ); |
408
|
|
|
} |
409
|
|
|
|
410
|
|
|
return $fragments; |
411
|
|
|
} |
412
|
|
|
|
413
|
|
|
endif; |
414
|
|
|
|
415
|
|
|
if ( ! function_exists( 'lsx_wc_cart_link' ) ) : |
416
|
|
|
|
417
|
|
|
/** |
418
|
|
|
* Cart Link. |
419
|
|
|
* Displayed a link to the cart including the number of items present and the cart total. |
420
|
|
|
* |
421
|
|
|
* @package lsx |
422
|
|
|
* @subpackage woocommerce |
423
|
|
|
*/ |
424
|
|
|
function lsx_wc_cart_link() { |
425
|
|
|
?> |
426
|
|
|
<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"> |
427
|
|
|
<span class="lsx-wc-cart-amount"><?php echo wp_kses_data( WC()->cart->get_cart_subtotal() ); ?></span> |
428
|
|
|
|
429
|
|
|
<?php /* Translators: %s: items quantity */ ?> |
430
|
|
|
<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> |
431
|
|
|
|
432
|
|
|
<?php if ( ! empty( WC()->cart->get_cart_contents_count() ) ) : ?> |
433
|
|
|
<span class="lsx-wc-cart-count-badge"><?php echo wp_kses_data( WC()->cart->get_cart_contents_count() ); ?></span> |
434
|
|
|
<?php endif; ?> |
435
|
|
|
</a> |
436
|
|
|
<?php |
437
|
|
|
} |
438
|
|
|
|
439
|
|
|
endif; |
440
|
|
|
|
441
|
|
|
if ( ! function_exists( 'lsx_wc_items_counter' ) ) : |
442
|
|
|
|
443
|
|
|
/** |
444
|
|
|
* Add car item hidden items counter. |
445
|
|
|
* |
446
|
|
|
* @package lsx |
447
|
|
|
* @subpackage woocommerce |
448
|
|
|
*/ |
449
|
|
|
function lsx_wc_items_counter() { |
450
|
|
|
$count = (int) WC()->cart->get_cart_contents_count(); |
451
|
|
|
$items_counter = ''; |
452
|
|
|
|
453
|
|
|
if ( ! empty( $count ) ) { |
454
|
|
|
$count -= 3; |
455
|
|
|
|
456
|
|
|
if ( 1 === $count ) { |
457
|
|
|
$items_counter = esc_html__( '1 other item in cart', 'lsx' ); |
458
|
|
|
} elseif ( $count > 1 ) { |
459
|
|
|
/* Translators: %s: items counter */ |
460
|
|
|
$items_counter = sprintf( esc_html__( '%s other items in cart', 'lsx' ), $count ); |
461
|
|
|
} |
462
|
|
|
} |
463
|
|
|
$cart_url = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : WC()->cart->get_cart_url(); |
464
|
|
|
if ( ! empty( $items_counter ) ) : |
465
|
|
|
?> |
466
|
|
|
<li class="woocommerce-mini-cart-item mini_cart_item" style="display: block;"> |
467
|
|
|
<a href="<?php echo esc_url( $cart_url ); ?>"><?php echo esc_html( $items_counter ); ?></a> |
468
|
|
|
</li> |
469
|
|
|
<?php |
470
|
|
|
endif; |
471
|
|
|
} |
472
|
|
|
|
473
|
|
|
endif; |
474
|
|
|
|
475
|
|
|
if ( ! function_exists( 'lsx_wc_loop_shop_per_page' ) ) : |
476
|
|
|
|
477
|
|
|
/** |
478
|
|
|
* Changes the number of products to display on shop. |
479
|
|
|
* |
480
|
|
|
* @package lsx |
481
|
|
|
* @subpackage woocommerce |
482
|
|
|
*/ |
483
|
|
|
function lsx_wc_loop_shop_per_page( $items ) { |
484
|
|
|
$items = 12; |
485
|
|
|
return $items; |
486
|
|
|
} |
487
|
|
|
|
488
|
|
|
add_filter( 'loop_shop_per_page', 'lsx_wc_loop_shop_per_page', 20 ); |
489
|
|
|
|
490
|
|
|
endif; |
491
|
|
|
|
492
|
|
|
if ( ! function_exists( 'lsx_wc_add_to_cart_message_html' ) ) : |
493
|
|
|
|
494
|
|
|
/** |
495
|
|
|
* Changes the "added to cart" message HTML. |
496
|
|
|
* |
497
|
|
|
* @package lsx |
498
|
|
|
* @subpackage woocommerce |
499
|
|
|
*/ |
500
|
|
|
function lsx_wc_add_to_cart_message_html( $message, $products ) { |
501
|
|
|
$message = '<div class="woocommerce-message-added-to-cart">' . $message . '</div>'; |
502
|
|
|
return $message; |
503
|
|
|
} |
504
|
|
|
|
505
|
|
|
add_filter( 'wc_add_to_cart_message_html', 'lsx_wc_add_to_cart_message_html', 20, 2 ); |
506
|
|
|
|
507
|
|
|
endif; |
508
|
|
|
|
509
|
|
|
if ( defined( 'WC_VERSION' ) && version_compare( WC_VERSION, '2.3', '>=' ) ) { |
|
|
|
|
510
|
|
|
add_filter( 'woocommerce_add_to_cart_fragments', 'lsx_wc_cart_link_fragment' ); |
511
|
|
|
} else { |
512
|
|
|
add_filter( 'add_to_cart_fragments', 'lsx_wc_cart_link_fragment' ); |
513
|
|
|
} |
514
|
|
|
|
515
|
|
|
remove_action( 'woocommerce_after_shop_loop', 'woocommerce_pagination', 10 ); |
516
|
|
|
|
517
|
|
|
add_action( 'woocommerce_after_shop_loop', 'lsx_wc_sorting_wrapper', 9 ); |
518
|
|
|
add_action( 'woocommerce_after_shop_loop', 'woocommerce_catalog_ordering', 10 ); |
519
|
|
|
add_action( 'woocommerce_after_shop_loop', 'woocommerce_result_count', 20 ); |
520
|
|
|
add_action( 'woocommerce_after_shop_loop', 'woocommerce_pagination', 30 ); |
521
|
|
|
add_action( 'woocommerce_after_shop_loop', 'lsx_wc_sorting_wrapper_close', 31 ); |
522
|
|
|
|
523
|
|
|
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 ); |
524
|
|
|
remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 ); |
525
|
|
|
|
526
|
|
|
add_action( 'woocommerce_before_shop_loop', 'lsx_wc_sorting_wrapper', 9 ); |
527
|
|
|
add_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 10 ); |
528
|
|
|
add_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 ); |
529
|
|
|
add_action( 'woocommerce_before_shop_loop', 'lsx_wc_woocommerce_pagination', 30 ); |
530
|
|
|
add_action( 'woocommerce_before_shop_loop', 'lsx_wc_sorting_wrapper_close', 31 ); |
531
|
|
|
|
532
|
|
|
if ( ! function_exists( 'lsx_wc_sorting_wrapper' ) ) : |
533
|
|
|
|
534
|
|
|
/** |
535
|
|
|
* Sorting wrapper. |
536
|
|
|
* |
537
|
|
|
* @package lsx |
538
|
|
|
* @subpackage woocommerce |
539
|
|
|
*/ |
540
|
|
|
function lsx_wc_sorting_wrapper() { |
541
|
|
|
echo '<div class="lsx-wc-sorting">'; |
542
|
|
|
} |
543
|
|
|
|
544
|
|
|
endif; |
545
|
|
|
|
546
|
|
|
if ( ! function_exists( 'lsx_wc_sorting_wrapper_close' ) ) : |
547
|
|
|
|
548
|
|
|
/** |
549
|
|
|
* Sorting wrapper close. |
550
|
|
|
* |
551
|
|
|
* @package lsx |
552
|
|
|
* @subpackage woocommerce |
553
|
|
|
*/ |
554
|
|
|
function lsx_wc_sorting_wrapper_close() { |
555
|
|
|
echo '</div>'; |
556
|
|
|
} |
557
|
|
|
|
558
|
|
|
endif; |
559
|
|
|
|
560
|
|
|
if ( ! function_exists( 'lsx_wc_product_columns_wrapper_close' ) ) : |
561
|
|
|
|
562
|
|
|
/** |
563
|
|
|
* Product columns wrapper close. |
564
|
|
|
* |
565
|
|
|
* @package lsx |
566
|
|
|
* @subpackage woocommerce |
567
|
|
|
*/ |
568
|
|
|
function lsx_wc_product_columns_wrapper_close() { |
569
|
|
|
echo '</div>'; |
570
|
|
|
} |
571
|
|
|
|
572
|
|
|
endif; |
573
|
|
|
|
574
|
|
|
if ( ! function_exists( 'lsx_wc_woocommerce_pagination' ) ) : |
575
|
|
|
|
576
|
|
|
/** |
577
|
|
|
* LSX WooCommerce Pagination |
578
|
|
|
* WooCommerce disables the product pagination inside the woocommerce_product_subcategories() function |
579
|
|
|
* but since LSX adds pagination before that function is excuted we need a separate function to |
580
|
|
|
* determine whether or not to display the pagination. |
581
|
|
|
* |
582
|
|
|
* @package lsx |
583
|
|
|
* @subpackage woocommerce |
584
|
|
|
*/ |
585
|
|
|
function lsx_wc_woocommerce_pagination() { |
586
|
|
|
if ( woocommerce_products_will_display() ) { |
587
|
|
|
woocommerce_pagination(); |
588
|
|
|
} |
589
|
|
|
} |
590
|
|
|
|
591
|
|
|
endif; |
592
|
|
|
|
593
|
|
|
if ( ! function_exists( 'lsx_customizer_wc_controls' ) ) : |
594
|
|
|
|
595
|
|
|
/** |
596
|
|
|
* Returns an array of the core panel. |
597
|
|
|
* |
598
|
|
|
* @package lsx |
599
|
|
|
* @subpackage customizer |
600
|
|
|
* |
601
|
|
|
* @return $lsx_controls array() |
|
|
|
|
602
|
|
|
*/ |
603
|
|
|
function lsx_customizer_wc_controls( $lsx_controls ) { |
604
|
|
|
$lsx_controls['panels']['woocommerce'] = array( |
605
|
|
|
'title' => esc_html__( 'WooCommerce', 'lsx' ), |
606
|
|
|
'description' => esc_html__( 'Change the WooCommerce settings.', 'lsx' ), |
607
|
|
|
'priority' => 23, |
608
|
|
|
); |
609
|
|
|
|
610
|
|
|
/** |
611
|
|
|
* Global. |
612
|
|
|
*/ |
613
|
|
|
|
614
|
|
|
$lsx_controls['sections']['lsx-wc-global'] = array( |
615
|
|
|
'title' => esc_html__( 'LSX Global', 'lsx' ), |
616
|
|
|
'description' => esc_html__( 'Change the WooCommerce global settings.', 'lsx' ), |
617
|
|
|
'panel' => 'woocommerce', |
618
|
|
|
'priority' => 1, |
619
|
|
|
); |
620
|
|
|
|
621
|
|
|
$lsx_controls['settings']['lsx_wc_trust_footer_bar_status'] = array( |
622
|
|
|
'default' => '1', |
623
|
|
|
'sanitize_callback' => 'lsx_sanitize_checkbox', |
624
|
|
|
); |
625
|
|
|
|
626
|
|
|
$lsx_controls['fields']['lsx_wc_trust_footer_bar_status'] = array( |
627
|
|
|
'label' => esc_html__( 'Footer Trust Factors Section', 'lsx' ), |
628
|
|
|
'description' => esc_html__( 'Enable the footer trust factors section.', 'lsx' ), |
629
|
|
|
'section' => 'lsx-wc-global', |
630
|
|
|
'type' => 'checkbox', |
631
|
|
|
'priority' => 1, |
632
|
|
|
); |
633
|
|
|
|
634
|
|
|
$lsx_controls['settings']['lsx_wc_mobile_footer_bar_status'] = array( |
635
|
|
|
'default' => '1', |
636
|
|
|
'sanitize_callback' => 'lsx_sanitize_checkbox', |
637
|
|
|
); |
638
|
|
|
|
639
|
|
|
$lsx_controls['fields']['lsx_wc_mobile_footer_bar_status'] = array( |
640
|
|
|
'label' => esc_html__( 'Footer Bar', 'lsx' ), |
641
|
|
|
'description' => esc_html__( 'Enable the mobile footer bar.', 'lsx' ), |
642
|
|
|
'section' => 'lsx-wc-global', |
643
|
|
|
'type' => 'checkbox', |
644
|
|
|
'priority' => 1, |
645
|
|
|
); |
646
|
|
|
|
647
|
|
|
/** |
648
|
|
|
* Cart. |
649
|
|
|
*/ |
650
|
|
|
|
651
|
|
|
$lsx_controls['sections']['lsx-wc-cart'] = array( |
652
|
|
|
'title' => esc_html__( 'LSX Cart', 'lsx' ), |
653
|
|
|
'description' => esc_html__( 'Change the WooCommerce cart settings.', 'lsx' ), |
654
|
|
|
'panel' => 'woocommerce', |
655
|
|
|
'priority' => 2, |
656
|
|
|
); |
657
|
|
|
|
658
|
|
|
$lsx_controls['settings']['lsx_header_wc_cart'] = array( |
659
|
|
|
'default' => false, |
660
|
|
|
'sanitize_callback' => 'lsx_sanitize_checkbox', |
661
|
|
|
); |
662
|
|
|
|
663
|
|
|
$lsx_controls['fields']['lsx_header_wc_cart'] = array( |
664
|
|
|
'label' => esc_html__( 'Menu Item', 'lsx' ), |
665
|
|
|
'description' => esc_html__( 'Enable the cart menu item.', 'lsx' ), |
666
|
|
|
'section' => 'lsx-wc-cart', |
667
|
|
|
'type' => 'checkbox', |
668
|
|
|
'priority' => 1, |
669
|
|
|
); |
670
|
|
|
|
671
|
|
|
return $lsx_controls; |
672
|
|
|
} |
673
|
|
|
|
674
|
|
|
add_filter( 'lsx_customizer_controls', 'lsx_customizer_wc_controls' ); |
675
|
|
|
|
676
|
|
|
endif; |
677
|
|
|
|
678
|
|
|
if ( ! function_exists( 'lsx_wc_global_header_title' ) ) : |
679
|
|
|
|
680
|
|
|
/** |
681
|
|
|
* Move the shop title into the global header |
682
|
|
|
* |
683
|
|
|
* @package lsx |
684
|
|
|
* @subpackage the-events-calendar |
685
|
|
|
*/ |
686
|
|
|
function lsx_wc_global_header_title( $title ) { |
687
|
|
|
|
688
|
|
|
if ( is_woocommerce() && is_shop() ) { |
689
|
|
|
|
690
|
|
|
$title = __( 'Shop', 'lsx' ); |
691
|
|
|
} |
692
|
|
|
|
693
|
|
|
return $title; |
694
|
|
|
} |
695
|
|
|
add_filter( 'lsx_global_header_title', 'lsx_wc_global_header_title', 200, 1 ); |
696
|
|
|
|
697
|
|
|
endif; |
698
|
|
|
|
699
|
|
|
|
700
|
|
|
if ( ! function_exists( 'lsx_wc_footer_bar' ) ) : |
701
|
|
|
|
702
|
|
|
/** |
703
|
|
|
* Display WC footer bar. |
704
|
|
|
* |
705
|
|
|
* @package lsx |
706
|
|
|
* @subpackage woocommerce |
707
|
|
|
*/ |
708
|
|
|
function lsx_wc_footer_bar() { |
709
|
|
|
$cart_url = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : WC()->cart->get_cart_url(); |
710
|
|
|
if ( ! empty( get_theme_mod( 'lsx_wc_mobile_footer_bar_status', '1' ) ) ) : |
711
|
|
|
?> |
712
|
|
|
<div class="lsx-wc-footer-bar"> |
713
|
|
|
<form role="search" method="get" action="<?php echo esc_url( home_url() ); ?>" class="lsx-wc-footer-bar-form"> |
714
|
|
|
<fieldset> |
715
|
|
|
<legend class="screen-reader-text"><?php esc_html_e( 'Search products', 'lsx' ); ?></legend> |
716
|
|
|
<input type="search" name="s" placeholder="<?php esc_attr_e( 'Search products...', 'lsx' ); ?>" class="form-control"> |
717
|
|
|
</fieldset> |
718
|
|
|
</form> |
719
|
|
|
|
720
|
|
|
<ul class="lsx-wc-footer-bar-items"> |
721
|
|
|
<li class="lsx-wc-footer-bar-item"> |
722
|
|
|
<a href="<?php echo esc_url( home_url() ); ?>" class="lsx-wc-footer-bar-link"> |
723
|
|
|
<i class="fa fa-home" aria-hidden="true"></i> |
724
|
|
|
<span><?php esc_html_e( 'Home', 'lsx' ); ?></span> |
725
|
|
|
</a> |
726
|
|
|
</li> |
727
|
|
|
|
728
|
|
|
<li class="lsx-wc-footer-bar-item"> |
729
|
|
|
<a href="<?php echo esc_url( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) ); ?>" class="lsx-wc-footer-bar-link"> |
|
|
|
|
730
|
|
|
<i class="fa fa-user" aria-hidden="true"></i> |
731
|
|
|
<span><?php esc_html_e( 'Account', 'lsx' ); ?></span> |
732
|
|
|
</a> |
733
|
|
|
</li> |
734
|
|
|
|
735
|
|
|
<li class="lsx-wc-footer-bar-item"> |
736
|
|
|
<a href="#" class="lsx-wc-footer-bar-link lsx-wc-footer-bar-link-toogle"> |
737
|
|
|
<i class="fa fa-search" aria-hidden="true"></i> |
738
|
|
|
<span><?php esc_html_e( 'Search', 'lsx' ); ?></span> |
739
|
|
|
</a> |
740
|
|
|
</li> |
741
|
|
|
|
742
|
|
|
<li class="lsx-wc-footer-bar-item"> |
743
|
|
|
<a href="<?php echo esc_url( $cart_url ); ?>" class="lsx-wc-footer-bar-link"> |
744
|
|
|
<i class="fa fa-shopping-basket" aria-hidden="true"></i> |
745
|
|
|
<?php $count = WC()->cart->get_cart_contents_count(); ?> |
746
|
|
|
<?php if ( ! empty( $count ) ) : ?> |
747
|
|
|
<span class="lsx-wc-footer-bar-count"><?php echo wp_kses_data( $count ); ?></span> |
748
|
|
|
<?php endif; ?> |
749
|
|
|
<span><?php esc_html_e( 'Cart', 'lsx' ); ?></span> |
750
|
|
|
</a> |
751
|
|
|
</li> |
752
|
|
|
</ul> |
753
|
|
|
</div> |
754
|
|
|
<?php |
755
|
|
|
endif; |
756
|
|
|
} |
757
|
|
|
|
758
|
|
|
add_action( 'lsx_body_bottom', 'lsx_wc_footer_bar', 15 ); |
759
|
|
|
|
760
|
|
|
endif; |
761
|
|
|
|
762
|
|
|
if ( ! function_exists( 'lsx_wc_body_class' ) ) : |
763
|
|
|
|
764
|
|
|
/** |
765
|
|
|
* Changes body class. |
766
|
|
|
* |
767
|
|
|
* @package lsx |
768
|
|
|
* @subpackage woocommerce |
769
|
|
|
*/ |
770
|
|
|
function lsx_wc_body_class( $classes ) { |
771
|
|
|
global $post; |
772
|
|
|
|
773
|
|
|
if ( $post && class_exists( 'WC_Wishlists_Pages' ) && WC_Wishlists_Pages::is_wishlist_page( $post->post_name ) ) { |
774
|
|
|
$classes[] = 'woocommerce-page woocommerce-wishlist'; |
775
|
|
|
} |
776
|
|
|
|
777
|
|
|
if ( ! empty( get_theme_mod( 'lsx_wc_mobile_footer_bar_status', '1' ) ) ) { |
778
|
|
|
$classes[] = 'lsx-wc-has-footer-bar'; |
779
|
|
|
} |
780
|
|
|
|
781
|
|
|
return $classes; |
782
|
|
|
} |
783
|
|
|
|
784
|
|
|
add_filter( 'body_class', 'lsx_wc_body_class', 2999 ); |
785
|
|
|
|
786
|
|
|
endif; |
787
|
|
|
|
788
|
|
|
if ( ! function_exists( 'lsx_wc_downloadable_products' ) ) : |
789
|
|
|
|
790
|
|
|
/** |
791
|
|
|
* Changes downloads "download" button text. |
792
|
|
|
* |
793
|
|
|
* @package lsx |
794
|
|
|
* @subpackage woocommerce |
795
|
|
|
*/ |
796
|
|
|
function lsx_wc_downloadable_products( $downloads ) { |
797
|
|
|
foreach ( $downloads as $i => $download ) { |
798
|
|
|
$downloads[ $i ]['download_name'] = esc_html__( 'Download', 'lsx' ); |
799
|
|
|
} |
800
|
|
|
|
801
|
|
|
return $downloads; |
802
|
|
|
} |
803
|
|
|
|
804
|
|
|
add_filter( 'woocommerce_customer_get_downloadable_products', 'lsx_wc_downloadable_products', 2999 ); |
805
|
|
|
|
806
|
|
|
endif; |
807
|
|
|
|
808
|
|
|
if ( ! function_exists( 'lsx_wc_move_bundle_products' ) ) : |
809
|
|
|
|
810
|
|
|
/** |
811
|
|
|
* WooCommerce - Move the bundle products to a tab. |
812
|
|
|
* |
813
|
|
|
* @package lsx |
814
|
|
|
* @subpackage woocommerce |
815
|
|
|
*/ |
816
|
|
|
function lsx_wc_move_bundle_products( $tabs ) { |
817
|
|
|
global $product, $post; |
818
|
|
|
|
819
|
|
|
if ( method_exists( $product, 'get_bundled_items' ) ) { |
820
|
|
|
$bundled_items = $product->get_bundled_items(); |
821
|
|
|
|
822
|
|
|
if ( ! empty( $bundled_items ) ) { |
823
|
|
|
$tabs['bundled_products'] = array( |
824
|
|
|
'title' => __( 'Included Products', 'lsx' ), |
825
|
|
|
'priority' => 10, |
826
|
|
|
'callback' => 'lsx_wc_bundle_products', |
827
|
|
|
); |
828
|
|
|
} |
829
|
|
|
} |
830
|
|
|
|
831
|
|
|
if ( isset( $tabs['description'] ) ) { |
832
|
|
|
$tabs['description']['priority'] = 5; |
833
|
|
|
} |
834
|
|
|
|
835
|
|
|
if ( isset( $tabs['reviews'] ) ) { |
836
|
|
|
$tabs['reviews']['priority'] = 15; |
837
|
|
|
} |
838
|
|
|
|
839
|
|
|
if ( isset( $tabs['product_enquiry'] ) ) { |
840
|
|
|
$tabs['product_enquiry']['priority'] = 20; |
841
|
|
|
} |
842
|
|
|
|
843
|
|
|
return $tabs; |
844
|
|
|
} |
845
|
|
|
|
846
|
|
|
add_action( 'woocommerce_product_tabs', 'lsx_wc_move_bundle_products', 50 ); |
847
|
|
|
|
848
|
|
|
endif; |
849
|
|
|
|
850
|
|
|
if ( ! function_exists( 'lsx_wc_bundle_products' ) ) : |
851
|
|
|
|
852
|
|
|
function lsx_wc_bundle_products() { |
853
|
|
|
global $product, $post; |
854
|
|
|
|
855
|
|
|
if ( method_exists( $product, 'get_bundled_items' ) ) { |
856
|
|
|
$bundled_items = $product->get_bundled_items(); |
857
|
|
|
|
858
|
|
|
// do_action( 'woocommerce_before_bundled_items', $product ); |
859
|
|
|
|
860
|
|
|
// foreach ( $bundled_items as $bundled_item ) { |
861
|
|
|
// do_action( 'woocommerce_bundled_item_details', $bundled_item, $product ); |
862
|
|
|
// } |
863
|
|
|
|
864
|
|
|
// do_action( 'woocommerce_after_bundled_items', $product ); |
865
|
|
|
|
866
|
|
|
$product_original = $product; |
867
|
|
|
|
868
|
|
|
// $this->widget_start( $args, $instance ); |
869
|
|
|
|
870
|
|
|
// @codingStandardsIgnoreLine |
871
|
|
|
echo apply_filters( 'woocommerce_before_widget_product_list', '<ul class="product_list_widget">' ); |
872
|
|
|
|
873
|
|
|
foreach ( $bundled_items as $bundled_item ) { |
874
|
|
|
$product = wc_get_product( $bundled_item->item_data['product_id'] ); |
875
|
|
|
wc_get_template( 'content-widget-product.php' ); |
876
|
|
|
$product = $product_original; |
877
|
|
|
} |
878
|
|
|
|
879
|
|
|
// @codingStandardsIgnoreLine |
880
|
|
|
echo apply_filters( 'woocommerce_after_widget_product_list', '</ul>' ); |
881
|
|
|
} |
882
|
|
|
|
883
|
|
|
// $this->widget_end( $args ); |
884
|
|
|
} |
885
|
|
|
|
886
|
|
|
endif; |
887
|
|
|
|
888
|
|
|
|
889
|
|
|
if ( ! function_exists( 'lsx_wc_product_searchform' ) ) : |
890
|
|
|
/** |
891
|
|
|
* woo_custom_product_searchform |
892
|
|
|
* |
893
|
|
|
* @access public |
894
|
|
|
* @since 1.0 |
895
|
|
|
* @return void |
896
|
|
|
*/ |
897
|
|
|
function lsx_wc_product_searchform( $form ) { |
898
|
|
|
|
899
|
|
|
ob_start(); |
900
|
|
|
?> |
901
|
|
|
<form role="search" method="get" class="search-form form-inline" id="searchform" action="<?php echo esc_url( home_url() ); ?>"> |
902
|
|
|
|
903
|
|
|
<div class="input-group"> |
904
|
|
|
<input type="search" value="<?php if ( is_search() ) { echo esc_html( get_search_query() ); } ?>" name="s" class="search-field form-control" placeholder="<?php esc_attr_e( 'Search', 'lsx' ); ?> <?php echo esc_attr( get_bloginfo( 'name' ) ); ?>"> |
905
|
|
|
<label class="hide"><?php esc_html_e( 'Search for:', 'lsx' ); ?></label> |
906
|
|
|
|
907
|
|
|
<span class="input-group-btn"> |
908
|
|
|
<button type="submit" class="search-submit btn btn-default"><span class="fa fa-search"></span></button> |
909
|
|
|
</span> |
910
|
|
|
</div> |
911
|
|
|
|
912
|
|
|
<input type="hidden" name="post_type" value="product" /> |
913
|
|
|
</form> |
914
|
|
|
<?php |
915
|
|
|
$form = ob_get_clean(); |
916
|
|
|
return $form; |
917
|
|
|
|
918
|
|
|
} |
919
|
|
|
endif; |
920
|
|
|
add_filter( 'get_product_search_form', 'lsx_wc_product_searchform', 10, 1 ); |
921
|
|
|
|
922
|
|
|
/** |
923
|
|
|
* Output the pagination. |
924
|
|
|
*/ |
925
|
|
|
function woocommerce_pagination() { |
926
|
|
|
if ( ! wc_get_loop_prop( 'is_paginated' ) || ! woocommerce_products_will_display() ) { |
927
|
|
|
return; |
928
|
|
|
} |
929
|
|
|
$args = array( |
930
|
|
|
'total' => wc_get_loop_prop( 'total_pages' ), |
931
|
|
|
'current' => wc_get_loop_prop( 'current_page' ), |
932
|
|
|
); |
933
|
|
|
|
934
|
|
|
if ( wc_get_loop_prop( 'is_shortcode' ) ) { |
935
|
|
|
$args['base'] = esc_url_raw( add_query_arg( 'product-page', '%#%', false ) ); |
936
|
|
|
$args['format'] = '?product-page = %#%'; |
937
|
|
|
} else { |
938
|
|
|
$args['base'] = esc_url_raw( str_replace( 999999999, '%#%', remove_query_arg( 'add-to-cart', get_pagenum_link( 999999999, false ) ) ) ); |
939
|
|
|
$args['format'] = ''; |
940
|
|
|
} |
941
|
|
|
|
942
|
|
|
echo wp_kses_post( '<div class="lsx-pagination-wrapper">' ); |
943
|
|
|
$template = wc_get_template_html( 'loop/pagination.php', $args ); |
944
|
|
|
$template = str_replace( 'woocommerce-pagination', 'lsx-pagination', $template ); |
945
|
|
|
echo wp_kses_post( $template ); |
946
|
|
|
echo wp_kses_post( '</div>' ); |
947
|
|
|
} |
948
|
|
|
|
949
|
|
|
function lsx_wc_pagination_args( $args ) { |
950
|
|
|
$args['prev_text'] = '<span class="meta-nav">←</span> ' . esc_html__( 'Previous', 'lsx' ); |
951
|
|
|
$args['next_text'] = esc_html__( 'Next', 'lsx' ) . ' <span class="meta-nav">→</span>'; |
952
|
|
|
$args['type'] = 'plain'; |
953
|
|
|
return $args; |
954
|
|
|
} |
955
|
|
|
add_filter( 'woocommerce_pagination_args', 'lsx_wc_pagination_args', 10, 1 ); |
956
|
|
|
|
957
|
|
|
|
958
|
|
|
/** |
959
|
|
|
* Returns the location of our product widget |
960
|
|
|
* |
961
|
|
|
* @param $located |
962
|
|
|
* @param $template_name |
963
|
|
|
* |
964
|
|
|
* @return array |
965
|
|
|
*/ |
966
|
|
|
function lsx_wc_product_widget_template( $located, $template_name ) { |
967
|
|
|
if ( 'content-widget-product.php' === $template_name || 'content-widget-review.php' === $template_name ) { |
968
|
|
|
|
969
|
|
|
$new_location = get_stylesheet_directory() . '/partials/' . $template_name; |
970
|
|
|
if ( file_exists( $new_location ) ) { |
971
|
|
|
$located = $new_location; |
972
|
|
|
} else { |
973
|
|
|
$new_location = get_parent_theme_file_path() . '/partials/' . $template_name; |
974
|
|
|
if ( file_exists( $new_location ) ) { |
975
|
|
|
$located = $new_location; |
976
|
|
|
} |
977
|
|
|
} |
978
|
|
|
} |
979
|
|
|
return $located; |
980
|
|
|
} |
981
|
|
|
add_filter( 'wc_get_template', 'lsx_wc_product_widget_template', 90, 2 ); |
982
|
|
|
|
983
|
|
|
if ( ! function_exists( 'lsx_payment_gateway_logos' ) ) { |
984
|
|
|
/** |
985
|
|
|
* Add Lets Encrypt and PayFast logos to cart. |
986
|
|
|
**/ |
987
|
|
|
function lsx_payment_gateway_logos() { |
988
|
|
|
$encript_image = get_template_directory_uri() . '/assets/images/lets-encript.svg'; |
989
|
|
|
$payfast_image = get_template_directory_uri() . '/assets/images/payfast-footer-logo.svg'; |
990
|
|
|
$payment_logos = get_template_directory_uri() . '/assets/images/payment-logos.svg'; |
991
|
|
|
$payment_logos_mobile = get_template_directory_uri() . '/assets/images/payment-logos-mobile.svg'; |
992
|
|
|
if ( ( is_checkout() || is_cart() ) && ( ! empty( get_theme_mod( 'lsx_wc_trust_footer_bar_status', '1' ) ) ) ) { |
993
|
|
|
?> |
994
|
|
|
<div class="row text-center vertical-align lsx-full-width-base-small checkout-cta-bottom"> |
995
|
|
|
<div class="col-md-12 img-payfast"> |
996
|
|
|
<img src="<?php echo esc_url( $payfast_image ); ?>" alt="payfast"/> |
997
|
|
|
</div> |
998
|
|
|
<div class="col-md-12 img-payments hidden-xs"> |
999
|
|
|
<img src="<?php echo esc_url( $payment_logos ); ?>" alt="payments"/> |
1000
|
|
|
</div> |
1001
|
|
|
<div class="col-md-12 img-payments hidden-sm hidden-md hidden-lg"> |
1002
|
|
|
<img src="<?php echo esc_url( $payment_logos_mobile ); ?>" alt="payments"/> |
1003
|
|
|
</div> |
1004
|
|
|
<div class="col-md-12 img-encrypt"> |
1005
|
|
|
<img src="<?php echo esc_url( $encript_image ); ?>" alt="lets_encrypt"/> |
1006
|
|
|
</div> |
1007
|
|
|
</div> |
1008
|
|
|
|
1009
|
|
|
<?php |
1010
|
|
|
} |
1011
|
|
|
} |
1012
|
|
|
add_action( 'lsx_footer_before', 'lsx_payment_gateway_logos' ); |
1013
|
|
|
} |
1014
|
|
|
|
1015
|
|
|
if ( ! function_exists( 'lsx_wc_archive_header' ) ) { |
1016
|
|
|
/** |
1017
|
|
|
* Add Lets Encrypt and PayFast logos to cart. |
1018
|
|
|
**/ |
1019
|
|
|
function lsx_wc_archive_header() { |
1020
|
|
|
if ( class_exists( 'WooCommerce' ) && ( is_shop() || is_product_category() || is_product_tag() ) ) { |
1021
|
|
|
|
1022
|
|
|
if ( function_exists( 'lsx_search' ) ) { |
1023
|
|
|
$search = lsx_search(); |
1024
|
|
|
remove_action( 'lsx_content_wrap_before', array( $search->frontend, 'wc_archive_header' ), 140 ); |
1025
|
|
|
} |
1026
|
|
|
|
1027
|
|
|
$default_size = 'sm'; |
1028
|
|
|
$size = apply_filters( 'lsx_bootstrap_column_size', $default_size ); |
1029
|
|
|
?> |
1030
|
|
|
<div class="archive-header-wrapper banner-woocommerce col-<?php echo esc_attr( $size ); ?>-12"> |
1031
|
|
|
<?php lsx_global_header_inner_bottom(); ?> |
1032
|
|
|
<header class="archive-header"> |
1033
|
|
|
<h1 class="archive-title"><?php woocommerce_page_title(); ?></h1> |
1034
|
|
|
<?php |
1035
|
|
|
if ( is_product_category() || is_product_tag() ) { |
1036
|
|
|
$description = get_the_archive_description(); |
1037
|
|
|
if ( ! empty( $description ) && '' !== $description ) { |
1038
|
|
|
echo wp_kses_post( $description ); |
1039
|
|
|
} |
1040
|
|
|
} else { |
1041
|
|
|
$shop_page = wc_get_page_id( 'shop' ); |
1042
|
|
|
if ( 0 < $shop_page ) { |
1043
|
|
|
$shop_page = get_post( $shop_page ); |
1044
|
|
|
if ( ! empty( $shop_page->post_excerpt ) ) { |
1045
|
|
|
echo wp_kses_post( '<p>' . $shop_page->post_excerpt . '</p>' ); |
1046
|
|
|
} |
1047
|
|
|
} |
1048
|
|
|
} |
1049
|
|
|
?> |
1050
|
|
|
</header> |
1051
|
|
|
</div> |
1052
|
|
|
<?php |
1053
|
|
|
} |
1054
|
|
|
} |
1055
|
|
|
add_action( 'lsx_content_wrap_before', 'lsx_wc_archive_header', 100 ); |
1056
|
|
|
} |
1057
|
|
|
|
1058
|
|
|
/** |
1059
|
|
|
* Moving the Reset Variations link. |
1060
|
|
|
**/ |
1061
|
|
|
function lsx_wc_reset_variations_link() { |
1062
|
|
|
echo '<a class="reset_variations" href="#">' . esc_html__( 'Clear', 'lsx' ) . '</a>'; |
1063
|
|
|
add_filter( 'woocommerce_reset_variations_link', 'lsx_wc_disable_default_reset_variations_link', 10, 1 ); |
1064
|
|
|
} |
1065
|
|
|
add_action( 'woocommerce_before_variations_form', 'lsx_wc_reset_variations_link', 10 ); |
1066
|
|
|
|
1067
|
|
|
/** |
1068
|
|
|
* Disables the default link. |
1069
|
|
|
* |
1070
|
|
|
* @param string $link |
1071
|
|
|
* @return string |
1072
|
|
|
*/ |
1073
|
|
|
function lsx_wc_disable_default_reset_variations_link( $link = '' ) { |
1074
|
|
|
return ''; |
1075
|
|
|
} |
1076
|
|
|
|
1077
|
|
|
/*if ( ! function_exists( 'lsx_wc_template_single_meta' ) ) { |
1078
|
|
|
function lsx_wc_template_single_meta_top() { |
1079
|
|
|
global $product; |
1080
|
|
|
|
1081
|
|
|
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 ); |
1082
|
|
|
?> |
1083
|
|
|
<div class="product_meta"> |
1084
|
|
|
<?php echo wc_get_product_category_list( $product->get_id(), ', ', '<span class="posted_in">' . _n( 'Category:', 'Categories:', count( $product->get_category_ids() ), 'woocommerce' ) . ' ', '</span>' ); ?> |
1085
|
|
|
</div> |
1086
|
|
|
<?php |
1087
|
|
|
} |
1088
|
|
|
add_action( 'woocommerce_single_product_summary', 'lsx_wc_template_single_meta_top', 7 ); |
1089
|
|
|
} |
1090
|
|
|
*/ |
1091
|
|
|
|
1092
|
|
|
if ( ! function_exists( 'lsx_wc_template_single_meta' ) ) { |
1093
|
|
|
/** |
1094
|
|
|
* Undocumented function |
1095
|
|
|
* |
1096
|
|
|
* @return void |
1097
|
|
|
*/ |
1098
|
|
|
function lsx_wc_woocommerce_sku() { |
1099
|
|
|
global $product; |
1100
|
|
|
if ( function_exists( 'wc_product_sku_enabled' ) && wc_product_sku_enabled() && ( $product->get_sku() || $product->is_type( 'variable' ) ) ) { |
1101
|
|
|
?> |
1102
|
|
|
<span class="sku_wrapper"><?php esc_html_e( 'SKU:', 'lsx' ); ?> <span class="sku"><?php echo esc_attr( $product->get_sku() ); ?></span></span> |
1103
|
|
|
<?php |
1104
|
|
|
add_filter( 'wc_product_sku_enabled', 'lsx_wc_default_woocommerce_sku_disable' ); |
1105
|
|
|
} |
1106
|
|
|
} |
1107
|
|
|
add_action( 'woocommerce_product_meta_start', 'woocommerce_template_single_meta', 10 ); |
1108
|
|
|
/** |
1109
|
|
|
* Disabled the default WC SKU |
1110
|
|
|
* |
1111
|
|
|
* @param boolean $enable |
1112
|
|
|
* @return boolean |
1113
|
|
|
*/ |
1114
|
|
|
function lsx_wc_default_woocommerce_sku_disable( $enable = false ) { |
1115
|
|
|
$enable = false; |
1116
|
|
|
return $enable; |
1117
|
|
|
} |
1118
|
|
|
|
1119
|
|
|
} |
1120
|
|
|
|
The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g.
excluded_paths: ["lib/*"]
, you can move it to the dependency path list as follows:For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths