|
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
|
|
View Code Duplication |
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
|
|
View Code Duplication |
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() ) ) { |
|
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 ) { |
|
|
|
|
|
|
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 ) { |
|
|
|
|
|
|
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() |
|
|
|
|
|
|
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 ) { |
|
|
|
|
|
|
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">←</span> ' . esc_html__( 'Previous', 'lsx' ); |
|
948
|
|
|
$args['next_text'] = esc_html__( 'Next', 'lsx' ) . ' <span class="meta-nav">→</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
|
|
|
|
This check looks from parameters that have been defined for a function or method, but which are not used in the method body.