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. |
||||||
0 ignored issues
–
show
|
|||||||
41 | //add_action( 'wp_head', array( $this, 'show_layout_switcher' ), 1 ); |
||||||
0 ignored issues
–
show
|
|||||||
42 | //add_filter( 'gridlist_toggle_button_output', array( $this, 'gridlist_toggle_button_output' ), 10, 3 ); |
||||||
0 ignored issues
–
show
|
|||||||
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 ) ) { |
||||||
0 ignored issues
–
show
|
|||||||
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 ) ) { |
||||||
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(); |
||||||
0 ignored issues
–
show
The function
WC was not found. Maybe you did not declare it correctly or list all dependencies?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||||
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>'; |
||||||
0 ignored issues
–
show
The function
wc_get_page_id was not found. Maybe you did not declare it correctly or list all dependencies?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() It seems like
get_permalink(wc_get_page_id('myaccount')) can also be of type false ; however, parameter $url of esc_url() does only seem to accept string , maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||||
602 | $item .= '<ul role="menu" class=" dropdown-menu lsx-wc-my-account-sub-menu">'; |
||||||
603 | foreach ( wc_get_account_menu_items() as $endpoint => $label ) { |
||||||
0 ignored issues
–
show
The function
wc_get_account_menu_items was not found. Maybe you did not declare it correctly or list all dependencies?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||||
604 | $slug = $endpoint; |
||||||
605 | if ( isset( $endpoints[ $endpoint ] ) && '' !== $endpoints[ $endpoint ] ) { |
||||||
0 ignored issues
–
show
|
|||||||
606 | $slug = $endpoints[ $endpoint ]; |
||||||
607 | } |
||||||
0 ignored issues
–
show
|
|||||||
608 | if ( 'dashboard' === $slug ) { |
||||||
0 ignored issues
–
show
|
|||||||
609 | $slug = ''; |
||||||
610 | } |
||||||
0 ignored issues
–
show
|
|||||||
611 | $item .= '<li class="menu-item"><a title="" href="' . esc_url( get_permalink( wc_get_page_id( 'myaccount' ) ) . $slug ) . '">' . $label . '</a></li>'; |
||||||
0 ignored issues
–
show
Are you sure
get_permalink(wc_get_page_id('myaccount')) of type false|string can be used in concatenation ?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||||
612 | } |
||||||
0 ignored issues
–
show
|
|||||||
613 | $item .= '</ul></li>'; |
||||||
614 | |||||||
0 ignored issues
–
show
|
|||||||
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 ) ) { |
||||||
0 ignored issues
–
show
|
|||||||
692 | global $WC_List_Grid; |
||||||
0 ignored issues
–
show
|
|||||||
693 | if ( null !== $WC_List_Grid ) { |
||||||
0 ignored issues
–
show
|
|||||||
694 | remove_action( 'woocommerce_before_shop_loop', array( $WC_List_Grid, 'gridlist_toggle_button' ), 30 ); |
||||||
0 ignored issues
–
show
|
|||||||
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 | } |
||||||
0 ignored issues
–
show
|
|||||||
701 | /** |
||||||
702 | * Display the woocommerce archive swticher. |
||||||
703 | */ |
||||||
704 | public function shop_gridlist_toggle_button() { |
||||||
705 | global $WC_List_Grid; |
||||||
0 ignored issues
–
show
|
|||||||
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(); ?> |
||||||
0 ignored issues
–
show
|
|||||||
710 | </div> |
||||||
711 | <?php |
||||||
712 | } |
||||||
0 ignored issues
–
show
|
|||||||
713 | public function gridlist_toggle_button_output( $output, $grid_view, $list_view ) { |
||||||
0 ignored issues
–
show
|
|||||||
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 | } |
||||||
0 ignored issues
–
show
|
|||||||
717 | } |
||||||
718 | |||||||
719 | new LSX_Customizer_WooCommerce(); |
||||||
720 | |||||||
721 | } |
||||||
722 |
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.
The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.
This check looks for comments that seem to be mostly valid code and reports them.