Passed
Push — master ( a023c6...df3337 )
by Warwick
09:48
created
classes/class-lsx-customizer-woocommerce.php 1 patch
Indentation   +611 added lines, -611 removed lines patch added patch discarded remove patch
@@ -1,365 +1,365 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 if ( ! class_exists( 'LSX_Customizer_WooCommerce' ) ) {
3 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
-				?>
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 363
 				<div class="lsx-wc-checkout-steps">
364 364
 					<ul class="lsx-wc-checkout-steps-items">
365 365
 
@@ -452,270 +452,270 @@  discard block
 block discarded – undo
452 452
 					</ul>
453 453
 				</div>
454 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
-					?>
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 484
 					<div class="lsx-wc-checkout-extra-html">
485 485
 						<?php echo wp_kses_post( $checkout_extra_html ); ?>
486 486
 					</div>
487 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
-                ?>
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 519
 					<div class="lsx-wc-cart-extra-html">
520 520
 						<?php echo wp_kses_post( $cart_extra_html ); ?>
521 521
 					</div>
522 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
-			?>
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 707
 			<div class="lsx-layout-switcher">
708 708
 				<span class="lsx-layout-switcher-label"><?php esc_html_e( 'Select view:', 'lsx-blog-customizer' ); ?></span>
709 709
 				<?php $WC_List_Grid->gridlist_toggle_button(); ?>
710 710
 			</div>
711 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();
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 720
 
721 721
 }
Please login to merge, or discard this patch.