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() ) { |
||||||
0 ignored issues
–
show
Bug
introduced
by
![]() |
|||||||
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'] ) ) { |
||||||
0 ignored issues
–
show
The function
is_checkout 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
![]() |
|||||||
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'] ) ); |
||||||
0 ignored issues
–
show
The function
wc_clean 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
![]() |
|||||||
344 | |||||||
345 | if ( $order_id > 0 ) { |
||||||
346 | wp_safe_redirect( get_permalink( $thankyou_page ) . '?order-received=' . $order_id . '&key=' . $order_key, 302 ); |
||||||
0 ignored issues
–
show
Are you sure
get_permalink($thankyou_page) 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
![]() It seems like
$thankyou_page can also be of type string ; however, parameter $post of get_permalink() does only seem to accept WP_Post|integer , 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
![]() |
|||||||
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(); |
||||||
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
![]() |
|||||||
360 | if ( ( is_checkout() || is_cart() ) && ! empty( get_theme_mod( 'lsx_checkout_steps', '1' ) ) ) : |
||||||
0 ignored issues
–
show
The function
is_cart 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
![]() The function
is_checkout 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
![]() |
|||||||
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"> |
||||||
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('shop')) 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
![]() |
|||||||
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() ) { |
||||||
0 ignored issues
–
show
The function
is_checkout 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
![]() |
|||||||
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() ) { |
||||||
0 ignored issues
–
show
The function
is_checkout 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
![]() |
|||||||
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() ) { |
||||||
0 ignored issues
–
show
The function
is_cart 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
![]() |
|||||||
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() ) { |
||||||
0 ignored issues
–
show
The function
is_cart 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
![]() |
|||||||
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() ) { |
||||||
0 ignored issues
–
show
The function
is_account_page 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
![]() |
|||||||
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 ] ) { |
||||||
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>'; |
||||||
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 | } |
||||||
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 |