1 | <?php |
||
2 | if ( ! class_exists( 'LSX_Customizer_WooCommerce' ) ) { |
||
3 | |||
4 | /** |
||
5 | * LSX Customizer WooCommerce Class |
||
6 | * |
||
7 | * @package LSX Customizer |
||
8 | * @author LightSpeed |
||
9 | * @license GPL3 |
||
10 | * @link |
||
11 | * @copyright 2016 LightSpeed |
||
12 | */ |
||
13 | class LSX_Customizer_WooCommerce extends LSX_Customizer { |
||
14 | |||
15 | /** |
||
16 | * Constructor. |
||
17 | * |
||
18 | * @since 1.1.1 |
||
19 | */ |
||
20 | public function __construct() { |
||
21 | add_action( 'customize_register', array( $this, 'customize_register' ), 20 ); |
||
22 | |||
23 | add_filter( 'body_class', array( $this, 'body_class' ), 2999 ); |
||
24 | |||
25 | add_action( 'template_redirect', array( $this, 'thankyou_page' ), 2999 ); |
||
26 | |||
27 | if ( empty( get_theme_mod( 'lsx_two_step_checkout', false ) ) ) { |
||
28 | add_action( 'lsx_entry_inside_top', array( $this, 'checkout_steps' ), 15 ); |
||
29 | } |
||
30 | |||
31 | add_action( 'wp', array( $this, 'cart_extra_html' ), 2999 ); |
||
32 | add_action( 'wp', array( $this, 'checkout_extra_html' ), 2999 ); |
||
33 | add_action( 'lsx_wc_cart_menu_item_position', array( $this, 'cart_menu_item_position' ) ); |
||
34 | add_action( 'lsx_wc_cart_menu_item_class', array( $this, 'cart_menu_item_class' ) ); |
||
35 | |||
36 | add_filter( 'wp_nav_menu_items', array( $this, 'my_account_menu_item' ), 9, 2 ); |
||
37 | add_action( 'lsx_wc_my_account_menu_item_position', array( $this, 'my_account_menu_item_position' ) ); |
||
38 | add_action( 'lsx_wc_my_account_menu_item_class', array( $this, 'my_account_menu_item_class' ) ); |
||
39 | |||
40 | // Shop Layout Switcher. |
||
41 | //add_action( 'wp_head', array( $this, 'show_layout_switcher' ), 1 ); |
||
42 | //add_filter( 'gridlist_toggle_button_output', array( $this, 'gridlist_toggle_button_output' ), 10, 3 ); |
||
43 | } |
||
44 | |||
45 | /** |
||
46 | * Customizer Controls and Settings. |
||
47 | * |
||
48 | * @param WP_Customize_Manager $wp_customize Theme Customizer object. |
||
49 | * @since 1.1.1 |
||
50 | */ |
||
51 | public function customize_register( $wp_customize ) { |
||
52 | /** |
||
53 | * Checkout. |
||
54 | */ |
||
55 | |||
56 | $wp_customize->add_section( 'lsx-wc-checkout', array( |
||
57 | 'title' => esc_html__( 'LSX Checkout', 'lsx-customizer' ), |
||
58 | 'description' => esc_html__( 'Change the WooCommerce checkout settings.', 'lsx-customizer' ), |
||
59 | 'panel' => 'woocommerce', |
||
60 | 'priority' => 3, |
||
61 | ) ); |
||
62 | |||
63 | $wp_customize->add_setting( 'lsx_checkout_steps', array( |
||
64 | 'default' => true, |
||
65 | 'sanitize_callback' => array( $this, 'sanitize_checkbox' ), |
||
66 | ) ); |
||
67 | |||
68 | $wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'lsx_checkout_steps', array( |
||
69 | 'label' => esc_html__( 'Steps', 'lsx-customizer' ), |
||
70 | 'description' => esc_html__( 'Enable the checkout steps header.', 'lsx-customizer' ), |
||
71 | 'section' => 'lsx-wc-checkout', |
||
72 | 'settings' => 'lsx_checkout_steps', |
||
73 | 'type' => 'checkbox', |
||
74 | 'priority' => 1, |
||
75 | ) ) ); |
||
76 | |||
77 | /** |
||
78 | * Checkout Layout |
||
79 | */ |
||
80 | $wp_customize->add_setting( 'lsx_wc_checkout_layout', array( |
||
81 | 'default' => 'default', |
||
82 | 'sanitize_callback' => array( $this, 'sanitize_select' ), |
||
83 | ) ); |
||
84 | |||
85 | $wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'lsx_wc_checkout_layout', array( |
||
86 | 'label' => esc_html__( 'Layout', 'lsx-customizer' ), |
||
87 | 'description' => esc_html__( 'WooCommerce checkout layout.', 'lsx-customizer' ), |
||
88 | 'section' => 'lsx-wc-checkout', |
||
89 | 'settings' => 'lsx_wc_checkout_layout', |
||
90 | 'type' => 'select', |
||
91 | 'priority' => 2, |
||
92 | 'choices' => array( |
||
93 | 'default' => esc_html__( 'Default', 'lsx-customizer' ), |
||
94 | 'stacked' => esc_html__( 'Stacked', 'lsx-customizer' ), |
||
95 | 'columns' => esc_html__( 'Columns', 'lsx-customizer' ), |
||
96 | ), |
||
97 | ) ) ); |
||
98 | |||
99 | $wp_customize->add_setting( 'lsx_wc_checkout_thankyou_page', array( |
||
100 | 'default' => '0', |
||
101 | 'sanitize_callback' => array( $this, 'sanitize_select' ), |
||
102 | ) ); |
||
103 | |||
104 | $choices = array( |
||
105 | '0' => esc_html__( 'Default', 'lsx-customizer' ), |
||
106 | ); |
||
107 | |||
108 | /** |
||
109 | * Distraction Free Checkout |
||
110 | */ |
||
111 | $wp_customize->add_setting( 'lsx_distraction_free_checkout', array( |
||
112 | 'sanitize_callback' => array( $this, 'sanitize_checkbox' ), |
||
113 | ) ); |
||
114 | |||
115 | $wp_customize->add_control( new WP_Customize_Control( |
||
116 | $wp_customize, |
||
117 | 'lsx_distraction_free_checkout', |
||
118 | array( |
||
119 | 'label' => esc_html__( 'Distraction Free Checkout', 'lsx-customizer' ), |
||
120 | 'description' => esc_html__( 'Removes all clutter from the checkout, allowing the customer to focus entirely on that procedure. Removes the stepped cart and checkout.', 'lsx-customizer' ), |
||
121 | 'section' => 'lsx-wc-checkout', |
||
122 | 'settings' => 'lsx_distraction_free_checkout', |
||
123 | 'type' => 'checkbox', |
||
124 | 'priority' => 3, |
||
125 | ) |
||
126 | ) ); |
||
127 | |||
128 | /** |
||
129 | * Two Step Checkout |
||
130 | */ |
||
131 | $wp_customize->add_setting( 'lsx_two_step_checkout', array( |
||
132 | 'sanitize_callback' => array( $this, 'sanitize_checkbox' ), |
||
133 | ) ); |
||
134 | |||
135 | $wp_customize->add_control( new WP_Customize_Control( |
||
136 | $wp_customize, |
||
137 | 'lsx_two_step_checkout', |
||
138 | array( |
||
139 | 'label' => esc_html__( 'Two Step Checkout', 'lsx-customizer' ), |
||
140 | 'description' => esc_html__( 'Separates the customer details collection form, and the order summary / payment details form in to two separate pages. Removes the stepped cart and checkout.', 'lsx-customizer' ), |
||
141 | 'section' => 'lsx-wc-checkout', |
||
142 | 'settings' => 'lsx_two_step_checkout', |
||
143 | 'type' => 'checkbox', |
||
144 | 'priority' => 4, |
||
145 | ) |
||
146 | ) ); |
||
147 | |||
148 | /** |
||
149 | * Thank you page options |
||
150 | */ |
||
151 | $pages = get_pages(); |
||
152 | |||
153 | foreach ( $pages as $key => $page ) { |
||
154 | $choices[ $page->ID ] = $page->post_title; |
||
155 | } |
||
156 | |||
157 | $wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'lsx_wc_checkout_thankyou_page', array( |
||
158 | 'label' => esc_html__( 'Thank You Page', 'lsx-customizer' ), |
||
159 | 'description' => esc_html__( 'WooCommerce checkout thank you page.', 'lsx-customizer' ), |
||
160 | 'section' => 'lsx-wc-checkout', |
||
161 | 'settings' => 'lsx_wc_checkout_thankyou_page', |
||
162 | 'type' => 'select', |
||
163 | 'priority' => 5, |
||
164 | 'choices' => $choices, |
||
165 | ) ) ); |
||
166 | |||
167 | $wp_customize->add_setting( 'lsx_wc_checkout_extra_html', array( |
||
168 | 'default' => '', |
||
169 | 'sanitize_callback' => 'wp_kses_post', |
||
170 | ) ); |
||
171 | |||
172 | $wp_customize->add_control( new LSX_Customizer_Wysiwyg_Control( $wp_customize, 'lsx_wc_checkout_extra_html', array( |
||
173 | 'label' => esc_html__( 'Extra HTML', 'lsx-customizer' ), |
||
174 | 'description' => esc_html__( 'Extra HTML to display at checkout page (bottom/right).', 'lsx-customizer' ), |
||
175 | 'section' => 'lsx-wc-checkout', |
||
176 | 'settings' => 'lsx_wc_checkout_extra_html', |
||
177 | 'priority' => 6, |
||
178 | 'type' => 'wysiwyg', |
||
179 | ) ) ); |
||
180 | |||
181 | /** |
||
182 | * Cart. |
||
183 | */ |
||
184 | |||
185 | $wp_customize->add_setting( 'lsx_wc_cart_menu_item_style', array( |
||
186 | 'default' => 'extended', |
||
187 | 'sanitize_callback' => array( $this, 'sanitize_select' ), |
||
188 | ) ); |
||
189 | |||
190 | $wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'lsx_wc_cart_menu_item_style', array( |
||
191 | 'label' => esc_html__( 'Menu Item Style', 'lsx-customizer' ), |
||
192 | 'description' => esc_html__( 'WooCommerce menu item cart style.', 'lsx-customizer' ), |
||
193 | 'section' => 'lsx-wc-cart', |
||
194 | 'settings' => 'lsx_wc_cart_menu_item_style', |
||
195 | 'type' => 'select', |
||
196 | 'priority' => 2, |
||
197 | 'choices' => array( |
||
198 | 'simple' => esc_html__( 'Simple', 'lsx-customizer' ), |
||
199 | 'extended' => esc_html__( 'Extended', 'lsx-customizer' ), |
||
200 | ), |
||
201 | ) ) ); |
||
202 | |||
203 | $wp_customize->add_setting( 'lsx_wc_cart_menu_item_position', array( |
||
204 | 'default' => 'main-menu-in', |
||
205 | 'sanitize_callback' => array( $this, 'sanitize_select' ), |
||
206 | ) ); |
||
207 | |||
208 | $wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'lsx_wc_cart_menu_item_position', array( |
||
209 | 'label' => esc_html__( 'Menu Item Position', 'lsx-customizer' ), |
||
210 | 'description' => esc_html__( 'WooCommerce menu item cart position.', 'lsx-customizer' ), |
||
211 | 'section' => 'lsx-wc-cart', |
||
212 | 'settings' => 'lsx_wc_cart_menu_item_position', |
||
213 | 'type' => 'select', |
||
214 | 'priority' => 3, |
||
215 | 'choices' => array( |
||
216 | 'main-menu-in' => esc_html__( 'Main Menu (as last item)', 'lsx-customizer' ), |
||
217 | 'main-menu-out' => esc_html__( 'Main Menu (as last item, right aligned)', 'lsx-customizer' ), |
||
218 | 'top-menu-left' => esc_html__( 'Top Menu (left)', 'lsx-customizer' ), |
||
219 | 'top-menu-right' => esc_html__( 'Top Menu (right)', 'lsx-customizer' ), |
||
220 | ), |
||
221 | ) ) ); |
||
222 | |||
223 | $wp_customize->add_setting( 'lsx_wc_cart_extra_html', array( |
||
224 | 'default' => '', |
||
225 | 'sanitize_callback' => 'wp_kses_post', |
||
226 | ) ); |
||
227 | |||
228 | $wp_customize->add_control( new LSX_Customizer_Wysiwyg_Control( $wp_customize, 'lsx_wc_cart_extra_html', array( |
||
229 | 'label' => esc_html__( 'Extra HTML', 'lsx-customizer' ), |
||
230 | 'description' => esc_html__( 'Extra HTML to display at cart page (bottom/left).', 'lsx-customizer' ), |
||
231 | 'section' => 'lsx-wc-cart', |
||
232 | 'settings' => 'lsx_wc_cart_extra_html', |
||
233 | 'priority' => 4, |
||
234 | 'type' => 'wysiwyg', |
||
235 | ) ) ); |
||
236 | |||
237 | /** |
||
238 | * My Account. |
||
239 | */ |
||
240 | |||
241 | $wp_customize->add_section( 'lsx-wc-my-account', array( |
||
242 | 'title' => esc_html__( 'LSX My Account', 'lsx-customizer' ), |
||
243 | 'description' => esc_html__( 'Change the WooCommerce My Account settings.', 'lsx-customizer' ), |
||
244 | 'panel' => 'woocommerce', |
||
245 | 'priority' => 4, |
||
246 | ) ); |
||
247 | |||
248 | $wp_customize->add_setting( 'lsx_wc_my_account_menu_item', array( |
||
249 | 'default' => false, |
||
250 | 'sanitize_callback' => array( $this, 'sanitize_checkbox' ), |
||
251 | ) ); |
||
252 | |||
253 | $wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'lsx_wc_my_account_menu_item', array( |
||
254 | 'label' => esc_html__( 'Menu Item', 'lsx-customizer' ), |
||
255 | 'description' => esc_html__( 'Enable the My Account menu item.', 'lsx-customizer' ), |
||
256 | 'section' => 'lsx-wc-my-account', |
||
257 | 'settings' => 'lsx_wc_my_account_menu_item', |
||
258 | 'type' => 'checkbox', |
||
259 | 'priority' => 1, |
||
260 | ) ) ); |
||
261 | |||
262 | $wp_customize->add_setting( 'lsx_wc_my_account_menu_item_style', array( |
||
263 | 'default' => 'extended', |
||
264 | 'sanitize_callback' => array( $this, 'sanitize_select' ), |
||
265 | ) ); |
||
266 | |||
267 | $wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'lsx_wc_my_account_menu_item_style', array( |
||
268 | 'label' => esc_html__( 'Menu Item Style', 'lsx-customizer' ), |
||
269 | 'description' => esc_html__( 'WooCommerce menu item My Account style.', 'lsx-customizer' ), |
||
270 | 'section' => 'lsx-wc-my-account', |
||
271 | 'settings' => 'lsx_wc_my_account_menu_item_style', |
||
272 | 'type' => 'select', |
||
273 | 'priority' => 2, |
||
274 | 'choices' => array( |
||
275 | 'simple' => esc_html__( 'Simple', 'lsx-customizer' ), |
||
276 | 'extended' => esc_html__( 'Extended', 'lsx-customizer' ), |
||
277 | ), |
||
278 | ) ) ); |
||
279 | |||
280 | $wp_customize->add_setting( 'lsx_wc_my_account_menu_item_position', array( |
||
281 | 'default' => 'main-menu-in', |
||
282 | 'sanitize_callback' => array( $this, 'sanitize_select' ), |
||
283 | ) ); |
||
284 | |||
285 | $wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'lsx_wc_my_account_menu_item_position', array( |
||
286 | 'label' => esc_html__( 'Menu Item Position', 'lsx-customizer' ), |
||
287 | 'description' => esc_html__( 'WooCommerce menu item My Account position.', 'lsx-customizer' ), |
||
288 | 'section' => 'lsx-wc-my-account', |
||
289 | 'settings' => 'lsx_wc_my_account_menu_item_position', |
||
290 | 'type' => 'select', |
||
291 | 'priority' => 3, |
||
292 | 'choices' => array( |
||
293 | 'main-menu-in' => esc_html__( 'Main Menu (as last item)', 'lsx-customizer' ), |
||
294 | 'main-menu-out' => esc_html__( 'Main Menu (as last item, right aligned)', 'lsx-customizer' ), |
||
295 | 'top-menu-left' => esc_html__( 'Top Menu (left)', 'lsx-customizer' ), |
||
296 | 'top-menu-right' => esc_html__( 'Top Menu (right)', 'lsx-customizer' ), |
||
297 | ), |
||
298 | ) ) ); |
||
299 | } |
||
300 | |||
301 | /** |
||
302 | * Add and remove WC body_class() classes. |
||
303 | * |
||
304 | * @since 1.1.1 |
||
305 | */ |
||
306 | public function body_class( $classes ) { |
||
307 | $distraction_free = get_theme_mod( 'lsx_distraction_free_checkout', false ); |
||
308 | $two_step_checkout = get_theme_mod( 'lsx_two_step_checkout', false ); |
||
309 | if ( is_checkout() ) { |
||
310 | $layout = get_theme_mod( 'lsx_wc_checkout_layout', 'default' ); |
||
311 | |||
312 | if ( 'default' === $layout ) { |
||
313 | $classes[] = 'lsx-wc-checkout-layout-default'; |
||
314 | } elseif ( 'stacked' === $layout ) { |
||
315 | $classes[] = 'lsx-wc-checkout-layout-stacked'; |
||
316 | } elseif ( 'columns' === $layout ) { |
||
317 | $classes[] = 'lsx-wc-checkout-layout-two-column-addreses'; |
||
318 | } |
||
319 | if ( ! empty( $distraction_free ) ) { |
||
320 | $classes[] = 'lsx-wc-checkout-distraction-free'; |
||
321 | } |
||
322 | if ( ! empty( $two_step_checkout ) ) { |
||
323 | $classes[] = 'lsx-wc-checkout-two-steps'; |
||
324 | } |
||
325 | } |
||
326 | |||
327 | return $classes; |
||
328 | } |
||
329 | |||
330 | /** |
||
331 | * WC thank you page. |
||
332 | * |
||
333 | * @since 1.1.1 |
||
334 | */ |
||
335 | public function thankyou_page() { |
||
336 | global $wp; |
||
337 | |||
338 | if ( is_checkout() && ! empty( $wp->query_vars['order-received'] ) ) { |
||
339 | $thankyou_page = get_theme_mod( 'lsx_wc_checkout_thankyou_page', '0' ); |
||
340 | |||
341 | if ( ! empty( $thankyou_page ) && ! is_page( $thankyou_page ) ) { |
||
342 | $order_id = apply_filters( 'woocommerce_thankyou_order_id', absint( $wp->query_vars['order-received'] ) ); |
||
343 | $order_key = apply_filters( 'woocommerce_thankyou_order_key', empty( $_GET['key'] ) ? '' : wc_clean( $_GET['key'] ) ); |
||
344 | |||
345 | if ( $order_id > 0 ) { |
||
346 | wp_safe_redirect( get_permalink( $thankyou_page ) . '?order-received=' . $order_id . '&key=' . $order_key, 302 ); |
||
347 | exit; |
||
348 | } |
||
349 | } |
||
350 | } |
||
351 | } |
||
352 | |||
353 | /** |
||
354 | * Display WC checkout steps. |
||
355 | * |
||
356 | * @since 1.1.1 |
||
357 | */ |
||
358 | public function checkout_steps() { |
||
359 | $cart_url = function_exists( 'wc_get_cart_url' ) ? wc_get_cart_url() : WC()->cart->get_cart_url(); |
||
360 | if ( ( is_checkout() || is_cart() ) && ! empty( get_theme_mod( 'lsx_checkout_steps', '1' ) ) ) : |
||
361 | global $wp; |
||
362 | ?> |
||
363 | <div class="lsx-wc-checkout-steps"> |
||
364 | <ul class="lsx-wc-checkout-steps-items"> |
||
365 | |||
366 | <?php if ( is_cart() ) : ?> |
||
367 | |||
368 | <li class="lsx-wc-checkout-steps-item lsx-wc-checkout-steps-item-done"> |
||
369 | <a href="<?php echo esc_url( get_permalink( wc_get_page_id( 'shop' ) ) ); ?>" class="lsx-wc-checkout-steps-link"> |
||
370 | <i class="fa fa-check-circle" aria-hidden="true"></i> |
||
371 | <span><span><?php esc_html_e( 'Shop', 'lsx-customizer' ); ?></span></span> |
||
372 | </a> |
||
373 | |||
374 | <i class="fa fa-angle-right" aria-hidden="true"></i> |
||
375 | </li> |
||
376 | |||
377 | <li class="lsx-wc-checkout-steps-item lsx-wc-checkout-steps-item-current lsx-wc-checkout-steps-item-cart"> |
||
378 | <i class="lsx-wc-checkout-steps-counter" aria-hidden="true"><?php esc_html_e( '2', 'lsx-customizer' ); ?></i> |
||
379 | <span><span><?php esc_html_e( 'My Cart', 'lsx-customizer' ); ?></span></span> |
||
380 | <i class="fa fa-angle-right" aria-hidden="true"></i> |
||
381 | </li> |
||
382 | |||
383 | <li class="lsx-wc-checkout-steps-item lsx-wc-checkout-steps-item-disabled lsx-wc-checkout-steps-item-payment"> |
||
384 | <i class="lsx-wc-checkout-steps-counter" aria-hidden="true"><?php esc_html_e( '3', 'lsx-customizer' ); ?></i> |
||
385 | <span><span><?php esc_html_e( 'Billing details', 'lsx-customizer' ); ?></span></span> |
||
386 | <i class="fa fa-angle-right" aria-hidden="true"></i> |
||
387 | </li> |
||
388 | |||
389 | <li class="lsx-wc-checkout-steps-item lsx-wc-checkout-steps-item-disabled lsx-wc-checkout-steps-item-thankyou"> |
||
390 | <i class="lsx-wc-checkout-steps-counter" aria-hidden="true"><?php esc_html_e( '4', 'lsx-customizer' ); ?></i> |
||
391 | <span><span><?php esc_html_e( 'Payment', 'lsx-customizer' ); ?></span></span> |
||
392 | </li> |
||
393 | |||
394 | <?php elseif ( is_checkout() && empty( $wp->query_vars['order-received'] ) ) : ?> |
||
395 | |||
396 | <li class="lsx-wc-checkout-steps-item lsx-wc-checkout-steps-item-done"> |
||
397 | <a href="<?php echo esc_url( get_permalink( wc_get_page_id( 'shop' ) ) ); ?>" class="lsx-wc-checkout-steps-link"> |
||
398 | <i class="fa fa-check-circle" aria-hidden="true"></i> |
||
399 | <span><span><?php esc_html_e( 'Shop', 'lsx-customizer' ); ?></span></span> |
||
400 | </a> |
||
401 | |||
402 | <i class="fa fa-angle-right" aria-hidden="true"></i> |
||
403 | </li> |
||
404 | |||
405 | <li class="lsx-wc-checkout-steps-item lsx-wc-checkout-steps-item-done lsx-wc-checkout-steps-item-cart"> |
||
406 | <a href="<?php echo esc_url( $cart_url ); ?>" class="lsx-wc-checkout-steps-link"> |
||
407 | <i class="fa fa-check-circle" aria-hidden="true"></i> |
||
408 | <span><span><?php esc_html_e( 'My Cart', 'lsx-customizer' ); ?></span></span> |
||
409 | </a> |
||
410 | |||
411 | <i class="fa fa-angle-right" aria-hidden="true"></i> |
||
412 | </li> |
||
413 | |||
414 | <li class="lsx-wc-checkout-steps-item lsx-wc-checkout-steps-item-current lsx-wc-checkout-steps-item-payment"> |
||
415 | <i class="lsx-wc-checkout-steps-counter" aria-hidden="true"><?php esc_html_e( '3', 'lsx-customizer' ); ?></i> |
||
416 | <span><span><?php esc_html_e( 'Billing details', 'lsx-customizer' ); ?></span></span> |
||
417 | <i class="fa fa-angle-right" aria-hidden="true"></i> |
||
418 | </li> |
||
419 | |||
420 | <li class="lsx-wc-checkout-steps-item lsx-wc-checkout-steps-item-disabled lsx-wc-checkout-steps-item-thankyou"> |
||
421 | <i class="lsx-wc-checkout-steps-counter" aria-hidden="true"><?php esc_html_e( '4', 'lsx-customizer' ); ?></i> |
||
422 | <span><span><?php esc_html_e( 'Payment', 'lsx-customizer' ); ?></span></span> |
||
423 | </li> |
||
424 | |||
425 | <?php elseif ( is_checkout() ) : ?> |
||
426 | |||
427 | <li class="lsx-wc-checkout-steps-item lsx-wc-checkout-steps-item-done"> |
||
428 | <i class="fa fa-check-circle" aria-hidden="true"></i> |
||
429 | <span><span><?php esc_html_e( 'Shop', 'lsx-customizer' ); ?></span></span> |
||
430 | <i class="fa fa-angle-right" aria-hidden="true"></i> |
||
431 | </li> |
||
432 | |||
433 | <li class="lsx-wc-checkout-steps-item lsx-wc-checkout-steps-item-done lsx-wc-checkout-steps-item-cart"> |
||
434 | <i class="fa fa-check-circle" aria-hidden="true"></i> |
||
435 | <span><span><?php esc_html_e( 'My Cart', 'lsx-customizer' ); ?></span></span> |
||
436 | <i class="fa fa-angle-right" aria-hidden="true"></i> |
||
437 | </li> |
||
438 | |||
439 | <li class="lsx-wc-checkout-steps-item lsx-wc-checkout-steps-item-done lsx-wc-checkout-steps-item-payment"> |
||
440 | <i class="fa fa-check-circle" aria-hidden="true"></i> |
||
441 | <span><span><?php esc_html_e( 'Billing details', 'lsx-customizer' ); ?></span></span> |
||
442 | <i class="fa fa-angle-right" aria-hidden="true"></i> |
||
443 | </li> |
||
444 | |||
445 | <li class="lsx-wc-checkout-steps-item lsx-wc-checkout-steps-item-current lsx-wc-checkout-steps-item-thankyou"> |
||
446 | <i class="lsx-wc-checkout-steps-counter" aria-hidden="true"><?php esc_html_e( '4', 'lsx-customizer' ); ?></i> |
||
447 | <span><span><?php esc_html_e( 'Payment', 'lsx-customizer' ); ?></span></span> |
||
448 | </li> |
||
449 | |||
450 | <?php endif; ?> |
||
451 | |||
452 | </ul> |
||
453 | </div> |
||
454 | <?php |
||
455 | endif; |
||
456 | } |
||
457 | |||
458 | /** |
||
459 | * Display extra HTML on checkout. |
||
460 | * |
||
461 | * @since 1.1.1 |
||
462 | */ |
||
463 | public function checkout_extra_html() { |
||
464 | if ( is_checkout() ) { |
||
465 | $checkout_extra_html = get_theme_mod( 'lsx_wc_checkout_extra_html', '' ); |
||
466 | |||
467 | if ( ! empty( $checkout_extra_html ) ) { |
||
468 | add_action( 'woocommerce_review_order_after_payment', array( $this, 'checkout_extra_html_echo' ), 9 ); |
||
469 | } |
||
470 | } |
||
471 | } |
||
472 | |||
473 | /** |
||
474 | * Display extra HTML on checkout. |
||
475 | * |
||
476 | * @since 1.1.1 |
||
477 | */ |
||
478 | public function checkout_extra_html_echo() { |
||
479 | if ( is_checkout() ) { |
||
480 | $checkout_extra_html = get_theme_mod( 'lsx_wc_checkout_extra_html', '' ); |
||
481 | |||
482 | if ( ! empty( $checkout_extra_html ) ) { |
||
0 ignored issues
–
show
Coding Style
introduced
by
![]() |
|||
483 | ?> |
||
484 | <div class="lsx-wc-checkout-extra-html"> |
||
485 | <?php echo wp_kses_post( $checkout_extra_html ); ?> |
||
486 | </div> |
||
487 | <?php |
||
488 | } |
||
489 | } |
||
490 | } |
||
491 | |||
492 | /** |
||
493 | * Display extra HTML on cart. |
||
494 | * |
||
495 | * @since 1.1.1 |
||
496 | */ |
||
497 | public function cart_extra_html() { |
||
498 | if ( is_cart() ) { |
||
499 | $cart_extra_html = get_theme_mod( 'lsx_wc_cart_extra_html', '' ); |
||
500 | |||
501 | if ( ! empty( $cart_extra_html ) ) { |
||
502 | remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cross_sell_display' ); |
||
503 | add_action( 'woocommerce_cart_collaterals', array( $this, 'cart_extra_html_echo' ), 9 ); |
||
504 | } |
||
505 | } |
||
506 | } |
||
507 | |||
508 | /** |
||
509 | * Display extra HTML on cart. |
||
510 | * |
||
511 | * @since 1.1.1 |
||
512 | */ |
||
513 | public function cart_extra_html_echo() { |
||
514 | if ( is_cart() ) { |
||
515 | $cart_extra_html = get_theme_mod( 'lsx_wc_cart_extra_html', '' ); |
||
516 | |||
517 | if ( ! empty( $cart_extra_html ) ) { |
||
518 | ?> |
||
519 | <div class="lsx-wc-cart-extra-html"> |
||
520 | <?php echo wp_kses_post( $cart_extra_html ); ?> |
||
521 | </div> |
||
522 | <?php |
||
523 | } |
||
524 | } |
||
525 | } |
||
526 | |||
527 | /** |
||
528 | * The place (menu) to display the cart menu item position. |
||
529 | * |
||
530 | * @since 1.1.1 |
||
531 | */ |
||
532 | public function cart_menu_item_position( $menu_position ) { |
||
533 | $position = get_theme_mod( 'lsx_wc_cart_menu_item_position', '' ); |
||
534 | |||
535 | if ( ! empty( $position ) ) { |
||
536 | switch ( $position ) { |
||
537 | case 'main-menu-in': |
||
538 | case 'main-menu-out': |
||
539 | $menu_position = 'primary'; |
||
540 | break; |
||
541 | |||
542 | case 'top-menu-right': |
||
543 | $menu_position = 'top-menu'; |
||
544 | break; |
||
545 | |||
546 | case 'top-menu-left': |
||
547 | $menu_position = 'top-menu-left'; |
||
548 | break; |
||
549 | } |
||
550 | } |
||
551 | |||
552 | return $menu_position; |
||
553 | } |
||
554 | |||
555 | /** |
||
556 | * The place (menu) to display the cart menu item position. |
||
557 | * |
||
558 | * @since 1.1.1 |
||
559 | */ |
||
560 | public function cart_menu_item_class( $item_class ) { |
||
561 | $position = get_theme_mod( 'lsx_wc_cart_menu_item_position', '' ); |
||
562 | |||
563 | if ( 'main-menu-out' === $position ) { |
||
564 | $item_class .= ' lsx-wc-cart-menu-item-right-aligned'; |
||
565 | } |
||
566 | |||
567 | $style = get_theme_mod( 'lsx_wc_cart_menu_item_style', '' ); |
||
568 | |||
569 | if ( 'simple' === $style ) { |
||
570 | $item_class .= ' lsx-wc-cart-menu-item-simple'; |
||
571 | } |
||
572 | |||
573 | return $item_class; |
||
574 | } |
||
575 | |||
576 | /** |
||
577 | * Adds WC My Account to the header. |
||
578 | * |
||
579 | * @since 1.1.1 |
||
580 | */ |
||
581 | public function my_account_menu_item( $items, $args ) { |
||
582 | $my_account_menu_item_position = apply_filters( 'lsx_wc_my_account_menu_item_position', 'primary' ); |
||
583 | |||
584 | if ( $my_account_menu_item_position === $args->theme_location || ( 'primary_logged_out' === $args->theme_location && 'primary' === $my_account_menu_item_position ) ) { |
||
585 | $customizer_option = get_theme_mod( 'lsx_wc_my_account_menu_item', false ); |
||
586 | |||
587 | if ( ! empty( $customizer_option ) ) { |
||
588 | if ( is_account_page() ) { |
||
589 | $class = 'current-menu-item'; |
||
590 | } else { |
||
591 | $class = ''; |
||
592 | } |
||
593 | |||
594 | $item_class = 'menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children dropdown lsx-wc-my-account-menu-item ' . $class; |
||
595 | $item_class = apply_filters( 'lsx_wc_my_account_menu_item_class', $item_class ); |
||
596 | |||
597 | $endpoints = WC()->query->get_query_vars(); |
||
598 | |||
599 | if ( is_user_logged_in() ) { |
||
600 | $item = '<li class="' . $item_class . '">'; |
||
601 | $item .= '<a title="' . esc_attr__( 'View your account', 'lsx-customizer' ) . '" href="' . esc_url( get_permalink( wc_get_page_id( 'myaccount' ) ) ) . '" data-toggle="dropdown" class="dropdown-toggle" aria-haspopup="true"><span>' . esc_attr__( 'My Account', 'lsx-customizer' ) . '</span></a>'; |
||
602 | $item .= '<ul role="menu" class=" dropdown-menu lsx-wc-my-account-sub-menu">'; |
||
603 | foreach ( wc_get_account_menu_items() as $endpoint => $label ) { |
||
604 | $slug = $endpoint; |
||
605 | if ( isset( $endpoints[ $endpoint ] ) && '' !== $endpoints[ $endpoint ] ) { |
||
606 | $slug = $endpoints[ $endpoint ]; |
||
607 | } |
||
608 | if ( 'dashboard' === $slug ) { |
||
609 | $slug = ''; |
||
610 | } |
||
611 | $item .= '<li class="menu-item"><a title="" href="' . esc_url( get_permalink( wc_get_page_id( 'myaccount' ) ) . $slug ) . '">' . $label . '</a></li>'; |
||
612 | } |
||
613 | $item .= '</ul></li>'; |
||
614 | |||
615 | } else { |
||
616 | $item = '<li class="' . $item_class . '">' . |
||
617 | '<a title="' . esc_attr__( 'View your account', 'lsx-customizer' ) . '" href="' . esc_url( get_permalink( wc_get_page_id( 'myaccount' ) ) ) . '"><span>' . esc_attr__( 'Login', 'lsx-customizer' ) . '</span></a>' . |
||
618 | '</li>'; |
||
619 | } |
||
620 | |||
621 | $item = apply_filters( 'lsx_wc_my_account_menu_item', $item ); |
||
622 | |||
623 | if ( 'top-menu' === $args->theme_location ) { |
||
624 | $items = $item . $items; |
||
625 | } else { |
||
626 | $items = $items . $item; |
||
627 | } |
||
628 | } |
||
629 | } |
||
630 | |||
631 | return $items; |
||
632 | } |
||
633 | |||
634 | /** |
||
635 | * The place (menu) to display the My Account menu item position. |
||
636 | * |
||
637 | * @since 1.1.1 |
||
638 | */ |
||
639 | public function my_account_menu_item_position( $menu_position ) { |
||
640 | $position = get_theme_mod( 'lsx_wc_my_account_menu_item_position', '' ); |
||
641 | |||
642 | if ( ! empty( $position ) ) { |
||
643 | switch ( $position ) { |
||
644 | case 'main-menu-in': |
||
645 | case 'main-menu-out': |
||
646 | $menu_position = 'primary'; |
||
647 | break; |
||
648 | |||
649 | case 'top-menu-right': |
||
650 | $menu_position = 'top-menu'; |
||
651 | break; |
||
652 | |||
653 | case 'top-menu-left': |
||
654 | $menu_position = 'top-menu-left'; |
||
655 | break; |
||
656 | } |
||
657 | } |
||
658 | |||
659 | return $menu_position; |
||
660 | } |
||
661 | |||
662 | /** |
||
663 | * The place (menu) to display the My Account menu item position. |
||
664 | * |
||
665 | * @since 1.1.1 |
||
666 | */ |
||
667 | public function my_account_menu_item_class( $item_class ) { |
||
668 | $position = get_theme_mod( 'lsx_wc_my_account_menu_item_position', '' ); |
||
669 | |||
670 | if ( 'main-menu-out' === $position ) { |
||
671 | $item_class .= ' lsx-wc-my-account-menu-item-right-aligned'; |
||
672 | } |
||
673 | |||
674 | if ( ! is_user_logged_in() ) { |
||
675 | $item_class .= ' lsx-wc-my-account-login'; |
||
676 | } |
||
677 | |||
678 | $style = get_theme_mod( 'lsx_wc_my_account_menu_item_style', '' ); |
||
679 | |||
680 | if ( 'simple' === $style ) { |
||
681 | $item_class .= ' lsx-wc-my-account-menu-item-simple'; |
||
682 | } |
||
683 | |||
684 | return $item_class; |
||
685 | } |
||
686 | /** |
||
687 | * Display the woocommerce archive swticher. |
||
688 | */ |
||
689 | public function show_layout_switcher() { |
||
690 | $body_classes = get_body_class(); |
||
691 | if ( in_array( 'post-type-archive-product', $body_classes ) ) { |
||
692 | global $WC_List_Grid; |
||
693 | if ( null !== $WC_List_Grid ) { |
||
694 | remove_action( 'woocommerce_before_shop_loop', array( $WC_List_Grid, 'gridlist_toggle_button' ), 30 ); |
||
695 | add_action( 'lsx_banner_inner_bottom', array( $this, 'shop_gridlist_toggle_button' ), 90 ); |
||
696 | add_action( 'lsx_global_header_inner_bottom', array( $this, 'shop_gridlist_toggle_button' ), 90 ); |
||
697 | wp_deregister_style( 'grid-list-button' ); |
||
698 | } |
||
699 | } |
||
700 | } |
||
701 | /** |
||
702 | * Display the woocommerce archive swticher. |
||
703 | */ |
||
704 | public function shop_gridlist_toggle_button() { |
||
705 | global $WC_List_Grid; |
||
706 | ?> |
||
707 | <div class="lsx-layout-switcher"> |
||
708 | <span class="lsx-layout-switcher-label"><?php esc_html_e( 'Select view:', 'lsx-blog-customizer' ); ?></span> |
||
709 | <?php $WC_List_Grid->gridlist_toggle_button(); ?> |
||
710 | </div> |
||
711 | <?php |
||
712 | } |
||
713 | public function gridlist_toggle_button_output( $output, $grid_view, $list_view ) { |
||
714 | $output = sprintf( '<div class="gridlist-toggle lsx-layout-switcher-options"><a href="#" class="lsx-layout-switcher-option" id="grid" title="%1$s"><span class="fa fa fa-th"></span></a><a href="#" class="lsx-layout-switcher-option" id="list" title="%2$s"><span class="fa fa-bars"></span></a></div>', $grid_view, $list_view ); |
||
715 | return $output; |
||
716 | } |
||
717 | } |
||
718 | |||
719 | new LSX_Customizer_WooCommerce(); |
||
720 | |||
721 | } |
||
722 |