Passed
Push — master ( 156fb3...cec279 )
by Warwick
03:12 queued 10s
created

extras.php ➔ lsx_breadcrumbs_blog_link()   B

Complexity

Conditions 7
Paths 4

Size

Total Lines 30

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 7
nc 4
nop 1
dl 0
loc 30
rs 8.5066
c 0
b 0
f 0
1
<?php
2
/**
3
 * LSX functions and definitions - Integrations - Extras
4
 *
5
 * @package    lsx
6
 * @subpackage extras
7
 */
8
9
if ( ! defined( 'ABSPATH' ) ) {
10
	exit;
11
}
12
13
/**
14
 * Enable shortcode for text widget.
15
 *
16
 * @package    lsx
17
 * @subpackage extras
18
 */
19
add_filter( 'widget_text', 'shortcode_unautop' );
20
add_filter( 'widget_text', 'do_shortcode' );
21
22
if ( ! function_exists( 'lsx_kses_allowed_html' ) ) :
23
24
	/**
25
	 * Enable extra attributes (srcset, sizes) in img tag.
26
	 *
27
	 * @package    lsx
28
	 * @subpackage extras
29
	 */
30
	function lsx_kses_allowed_html( $allowedtags, $context ) {
0 ignored issues
show
Unused Code introduced by
The parameter $context is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
31
		$allowedtags['img']['srcset'] = true;
32
		$allowedtags['img']['sizes']  = true;
33
34
		$allowedtags['input']['name']  = true;
35
		$allowedtags['input']['type']  = true;
36
		$allowedtags['input']['value'] = true;
37
		$allowedtags['input']['class'] = true;
38
		$allowedtags['input']['id']    = true;
39
		$allowedtags['script']['type'] = true;
40
		return $allowedtags;
41
	}
42
43
endif;
44
45
add_filter( 'wp_kses_allowed_html', 'lsx_kses_allowed_html', 10, 2 );
46
47
if ( ! function_exists( 'lsx_body_class' ) ) :
48
49
	/**
50
	 * Add and remove body_class() classes.
51
	 *
52
	 * @package    lsx
53
	 * @subpackage extras
54
	 */
55
	function lsx_body_class( $classes ) {
56
		global $post;
57
58
		$header_layout = get_theme_mod( 'lsx_header_layout', 'inline' );
59
		$classes[]     = 'header-' . $header_layout;
60
61
		if ( isset( $post ) ) {
62
			$classes[] = $post->post_name;
63
		}
64
65
		if ( ! class_exists( 'LSX_Banners' ) || ! empty( apply_filters( 'lsx_banner_plugin_disable', false ) ) ) {
66
			$post_types = array( 'page', 'post' );
67
			$post_types = apply_filters( 'lsx_allowed_post_type_banners', $post_types );
68
69
			if ( is_singular( $post_types ) && has_post_thumbnail() ) {
70
				$classes[] = 'page-has-banner';
71
			}
72
		}
73
74
		if ( has_nav_menu( 'top-menu' ) || has_nav_menu( 'top-menu-left' ) ) {
75
			$classes[] = 'has-top-menu';
76
		}
77
78
		$fixed_header = get_theme_mod( 'lsx_header_fixed', false );
79
80
		if ( false !== $fixed_header ) {
81
			$classes[] = 'top-menu-fixed';
82
		}
83
84
		$search_form = get_theme_mod( 'lsx_header_search', false );
85
86
		if ( false !== $search_form ) {
87
			$classes[] = 'has-header-search';
88
		}
89
90
		$preloader_content = get_theme_mod( 'lsx_preloader_content_status', false );
91
92
		if ( false !== $preloader_content ) {
93
			$classes[] = 'preloader-content-enable';
94
		}
95
96
		return $classes;
97
	}
98
99
endif;
100
101
add_filter( 'body_class', 'lsx_body_class' );
102
103
if ( ! function_exists( 'lsx_embed_wrap' ) ) :
104
105
	/**
106
	 * Wrap embedded media as suggested by Readability.
107
	 *
108
	 * @package    lsx
109
	 * @subpackage extras
110
	 *
111
	 * @link https://gist.github.com/965956
112
	 * @link http://www.readability.com/publishers/guidelines#publisher
113
	 */
114
	function lsx_embed_wrap( $cache, $url, $attr = '', $post_id = '' ) {
0 ignored issues
show
Unused Code introduced by
The parameter $url is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $attr is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $post_id is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
115
		if ( false !== strpos( $cache, '<iframe' ) ) {
116
			return '<div class="entry-content-asset">' . $cache . '</div>';
117
		}
118
119
		return $cache;
120
	}
121
122
endif;
123
124
add_filter( 'embed_oembed_html', 'lsx_embed_wrap', 10, 4 );
125
126
if ( ! function_exists( 'lsx_remove_self_closing_tags' ) ) :
127
128
	/**
129
	 * Remove unnecessary self-closing tags.
130
	 *
131
	 * @package    lsx
132
	 * @subpackage extras
133
	 */
134
	function lsx_remove_self_closing_tags( $input ) {
135
		return str_replace( ' />', '>', $input );
136
	}
137
138
endif;
139
140
add_filter( 'get_avatar', 'lsx_remove_self_closing_tags' ); // <img />
141
add_filter( 'comment_id_fields', 'lsx_remove_self_closing_tags' ); // <input />
142
add_filter( 'post_thumbnail_html', 'lsx_remove_self_closing_tags' ); // <img />
143
144
if ( ! function_exists( 'lsx_is_element_empty' ) ) :
145
146
	/**
147
	 * Checks if a Nav $element is empty or not.
148
	 *
149
	 * @package    lsx
150
	 * @subpackage extras
151
	 */
152
	function lsx_is_element_empty( $element ) {
153
		$element = trim( $element );
154
		return empty( $element ) ? false : true;
155
	}
156
157
endif;
158
159
if ( ! function_exists( 'lsx_get_thumbnail' ) ) :
160
161
	/**
162
	 * return the responsive images.
163
	 *
164
	 * @package    lsx
165
	 * @subpackage extras
166
	 */
167
	function lsx_get_thumbnail( $size, $image_src = false ) {
168
		if ( false === $image_src ) {
169
			$post_id           = get_the_ID();
170
			$post_thumbnail_id = get_post_thumbnail_id( $post_id );
171
		} elseif ( false !== $image_src ) {
172
			if ( is_numeric( $image_src ) ) {
173
				$post_thumbnail_id = $image_src;
174
			} else {
175
				$post_thumbnail_id = lsx_get_attachment_id_from_src( $image_src );
176
			}
177
		}
178
179
		$size = apply_filters( 'lsx_thumbnail_size', $size );
180
		$img  = false;
0 ignored issues
show
Unused Code introduced by
$img is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
181
182
		if ( 'lsx-thumbnail-single' === $size || 'lsx-thumbnail-wide' === $size || 'lsx-thumbnail-square' === $size || 'thumbnail' === $size ) {
183
			$srcset = false;
184
			$img    = wp_get_attachment_image_src( $post_thumbnail_id, $size );
0 ignored issues
show
Bug introduced by
The variable $post_thumbnail_id does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
185
			$img    = $img[0];
186
		} else {
187
			$srcset = true;
188
			$img    = wp_get_attachment_image_srcset( $post_thumbnail_id, $size );
189
190
			if ( empty( $img ) ) {
191
				$srcset = false;
192
				$img    = wp_get_attachment_image_src( $post_thumbnail_id, $size );
193
				$img    = $img[0];
194
			}
195
		}
196
197
		if ( ! empty( $img ) ) {
198
			if ( $srcset ) {
199
				$img = '<img alt="' . the_title_attribute( 'echo=0' ) . '" class="attachment-responsive wp-post-image lsx-responsive" srcset="' . esc_attr( $img ) . '" />';
200
			} else {
201
				$img = '<img alt="' . the_title_attribute( 'echo=0' ) . '" class="attachment-responsive wp-post-image lsx-responsive" src="' . esc_url( $img ) . '" />';
202
			}
203
204
			$img = apply_filters( 'lsx_lazyload_filter_images', $img );
205
		}
206
207
		return $img;
208
	}
209
210
endif;
211
212
if ( ! function_exists( 'lsx_thumbnail' ) ) :
213
214
	/**
215
	 * Output the Resonsive Images.
216
	 *
217
	 * @package    lsx
218
	 * @subpackage extras
219
	 */
220
	function lsx_thumbnail( $size = 'thumbnail', $image_src = false ) {
221
		echo wp_kses_post( lsx_get_thumbnail( $size, $image_src ) );
222
	}
223
224
endif;
225
226
if ( ! function_exists( 'lsx_get_attachment_id_from_src' ) ) :
227
228
	/**
229
	 * Gets the attachments ID from the src.
230
	 *
231
	 * @package    lsx
232
	 * @subpackage extras
233
	 */
234
	function lsx_get_attachment_id_from_src( $image_src ) {
235
		$post_id = wp_cache_get( $image_src, 'lsx_get_attachment_id_from_src' );
236
237
		if ( false === $post_id ) {
238
			global $wpdb;
239
			$post_id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE guid='%s' LIMIT 1", $image_src ) );
240
			wp_cache_set( $image_src, $post_id, 'lsx_get_attachment_id_from_src', 3600 );
241
		}
242
243
		return $post_id;
244
	}
245
246
endif;
247
248
if ( ! function_exists( 'lsx_page_banner' ) ) :
249
250
	/**
251
	 * Add Featured Image as Banner on Single Pages.
252
	 *
253
	 * @package    lsx
254
	 * @subpackage extras
255
	 */
256
	function lsx_page_banner() {
257
		if ( true === apply_filters( 'lsx_page_banner_disable', false ) ) {
258
			return;
259
		}
260
261
		$post_types = array( 'page', 'post' );
262
		$post_types = apply_filters( 'lsx_allowed_post_type_banners', $post_types );
263
264
		if ( is_singular( $post_types ) && has_post_thumbnail() ) :
265
			$bg_image = '';
266
267
			if ( has_post_thumbnail() ) {
268
				$bg_image = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'full' );
269
				$bg_image = $bg_image[0];
270
			}
271
272
			if ( ! empty( $bg_image ) ) :
273
				?>
274
					<div class="page-banner-wrap">
275
						<div class="page-banner">
276
							<?php lsx_banner_inner_top(); ?>
277
278
							<div class="page-banner-image" style="background-image:url(<?php echo esc_attr( $bg_image ); ?>);"></div>
279
280
							<div class="container">
281
								<header class="page-header">
282
									<h1 class="page-title"><?php the_title(); ?></h1>
283
									<?php lsx_banner_content(); ?>
284
								</header>
285
							</div>
286
287
							<?php lsx_banner_inner_bottom(); ?>
288
						</div>
289
					</div>
290
				<?php
291
			endif;
292
		endif;
293
	}
294
295
endif;
296
297
add_filter( 'lsx_banner_disable', 'lsx_disable_banner_for_blocks' );
298
add_filter( 'lsx_global_header_disable', 'lsx_disable_banner_for_blocks' );
299
300
301
if ( ! function_exists( 'lsx_disable_banner_for_blocks' ) ) :
302
303
	/**
304
	 * Disable the Banner if the page is using Blocks
305
	 *
306
	 * @package    lsx
307
	 * @subpackage extras
308
	 *
309
	 * @param  $disable boolean
310
	 * @return boolean
311
	 */
312
	function lsx_disable_banner_for_blocks( $disable ) {
313
		$queried_object = get_queried_object();
314
		$show_on_front  = get_option( 'show_on_front' );
315
316
		if ( 'page' === $show_on_front && (int) get_option( 'page_for_posts' ) === $queried_object->ID ) {
317
			return $disable;
318
		}
319
320
		if ( function_exists( 'has_blocks' ) && has_blocks() ) {
321
			$disable = true;
322
		}
323
		return $disable;
324
	}
325
326
endif;
327
328
add_action( 'lsx_header_after', 'lsx_page_banner' );
329
330
if ( ! function_exists( 'lsx_form_submit_button' ) ) :
331
332
	/**
333
	 * filter the Gravity Forms button type.
334
	 *
335
	 * @package    lsx
336
	 * @subpackage extras
337
	 *
338
	 * @param  $button String
339
	 * @param  $form   Object
340
	 * @return String
341
	 */
342
	function lsx_form_submit_button( $button, $form ) {
0 ignored issues
show
Unused Code introduced by
The parameter $button is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
343
		return "<button class='btn btn-primary' id='gform_submit_button_{$form["id"]}'><span>Submit</span></button>";
344
	}
345
346
endif;
347
348
add_filter( 'gform_submit_button', 'lsx_form_submit_button', 10, 2 );
349
350
if ( ! function_exists( 'lsx_excerpt_more' ) ) :
351
352
	/**
353
	 * Replaces the excerpt "more" text by a link.
354
	 *
355
	 * @package    lsx
356
	 * @subpackage extras
357
	 */
358
	function lsx_excerpt_more( $more ) {
0 ignored issues
show
Unused Code introduced by
The parameter $more is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
359
		return '...';
360
	}
361
362
endif;
363
364
add_filter( 'excerpt_more', 'lsx_excerpt_more' );
365
366
if ( ! function_exists( 'lsx_the_excerpt_filter' ) ) :
367
368
	/**
369
	 * Add a continue reading link to the excerpt.
370
	 *
371
	 * @package    lsx
372
	 * @subpackage extras
373
	 */
374
	function lsx_the_excerpt_filter( $excerpt ) {
375
376
		$post_formats = array(
377
			'aside'   => 'aside',
378
			'gallery' => 'gallery',
379
			'link'    => 'link',
380
			'image'   => 'image',
381
			'quote'   => 'quote',
382
			'status'  => 'status',
383
			'video'   => 'video',
384
			'audio'   => 'audio',
385
		);
386
387
		$show_full_content = has_post_format( apply_filters( 'lsx_the_excerpt_filter_post_types', $post_formats ) );
388
389
		if ( ! $show_full_content ) {
390
			if ( '' !== $excerpt && ! stristr( $excerpt, 'moretag' ) ) {
391
				$pagination = wp_link_pages( array(
392
					'before'      => '<div class="lsx-postnav-wrapper"><div class="lsx-postnav">',
393
					'after'       => '</div></div>',
394
					'link_before' => '<span>',
395
					'link_after'  => '</span>',
396
					'echo'        => 0,
397
				) );
398
399
				if ( ! empty( $pagination ) ) {
400
					$excerpt .= $pagination;
401
				} else {
402
					$excerpt_more = '<p><a class="moretag" href="' . esc_url( get_permalink() ) . '">' . esc_html__( 'Continue reading', 'lsx' ) . '</a></p>';
403
					$excerpt     .= apply_filters( 'excerpt_more_p', $excerpt_more );
404
				}
405
			}
406
		}
407
408
		return $excerpt;
409
	}
410
411
endif;
412
413
add_filter( 'the_excerpt', 'lsx_the_excerpt_filter', 1, 20 );
414
415
if ( ! function_exists( 'lsx_custom_wp_trim_excerpt' ) ) :
416
417
	/**
418
	 * Allow HTML tags in excerpt.
419
	 *
420
	 * @package    lsx
421
	 * @subpackage extras
422
	 */
423
	function lsx_custom_wp_trim_excerpt( $wpse_excerpt ) {
424
		global $post;
425
		$raw_excerpt = $wpse_excerpt;
426
427
		if ( empty( $wpse_excerpt ) ) {
428
			$wpse_excerpt = get_the_content( '' );
429
430
			$post_formats = array(
431
				'aside'   => 'aside',
432
				'gallery' => 'gallery',
433
				'link'    => 'link',
434
				'image'   => 'image',
435
				'quote'   => 'quote',
436
				'status'  => 'status',
437
				'video'   => 'video',
438
				'audio'   => 'audio',
439
			);
440
441
			$show_full_content = has_post_format( apply_filters( 'lsx_excerpt_read_more_post_formats', $post_formats ) );
442
443
			if ( ! $show_full_content ) {
444
				$wpse_excerpt = strip_shortcodes( $wpse_excerpt );
445
				$wpse_excerpt = apply_filters( 'the_content', $wpse_excerpt );
446
				$wpse_excerpt = str_replace( ']]>', ']]>', $wpse_excerpt );
447
				$wpse_excerpt = strip_tags( $wpse_excerpt, apply_filters( 'excerpt_strip_tags', '<h1>,<h2>,<h3>,<h4>,<h5>,<h6>,<a>,<button>,<blockquote>,<p>,<br>,<b>,<strong>,<i>,<u>,<ul>,<ol>,<li>,<span>,<div>' ) );
448
449
				$excerpt_word_count = 50;
450
				$excerpt_word_count = apply_filters( 'excerpt_length', $excerpt_word_count );
451
452
				$tokens         = array();
453
				$excerpt_output = '';
454
				$has_more       = false;
455
				$count          = 0;
456
457
				preg_match_all( '/(<[^>]+>|[^<>\s]+)\s*/u', $wpse_excerpt, $tokens );
458
459
				foreach ( $tokens[0] as $token ) {
460
					if ( $count >= $excerpt_word_count ) {
461
						$excerpt_output .= trim( $token );
462
						$has_more        = true;
463
						break;
464
					}
465
466
					$count++;
467
					$excerpt_output .= $token;
468
				}
469
470
				$wpse_excerpt = trim( force_balance_tags( $excerpt_output ) );
471
472
				if ( $has_more ) {
473
					$excerpt_end = '<a class="moretag" href="' . esc_url( get_permalink() ) . '">' . esc_html__( 'More', 'lsx' ) . '</a>';
474
					$excerpt_end = apply_filters( 'excerpt_more', ' ' . $excerpt_end );
475
476
					$pos = strrpos( $wpse_excerpt, '</' );
477
478
					if ( false !== $pos ) {
479
						// Inside last HTML tag.
480
						$wpse_excerpt = substr_replace( $wpse_excerpt, $excerpt_end, $pos, 0 ); /* Add read more next to last word */
481
					} else {
482
						// After the content.
483
						$wpse_excerpt .= $excerpt_end; /*Add read more in new paragraph */
484
					}
485
				}
486
			} else {
487
				$wpse_excerpt = apply_filters( 'the_content', $wpse_excerpt );
488
				$wpse_excerpt = str_replace( ']]>', ']]>', $wpse_excerpt );
489
				//$wpse_excerpt = strip_tags( $wpse_excerpt, '<blockquote>,<p>' );
490
				$wpse_excerpt = trim( force_balance_tags( $wpse_excerpt ) );
491
			}
492
493
			return $wpse_excerpt;
494
		}
495
496
		return apply_filters( 'lsx_custom_wp_trim_excerpt', $wpse_excerpt, $raw_excerpt );
497
	}
498
499
endif;
500
501
remove_filter( 'get_the_excerpt', 'wp_trim_excerpt' );
502
add_filter( 'get_the_excerpt', 'lsx_custom_wp_trim_excerpt' );
503
504
if ( ! function_exists( 'lsx_full_width_widget_classes' ) ) :
505
506
	/**
507
	 * Filter sidebar widget params, to add the widget_lsx_full_width_alt or widget_lsx_full_width classes to the text widget.
508
	 *
509
	 * @package    lsx
510
	 * @subpackage extras
511
	 */
512
	function lsx_full_width_widget_classes( $params ) {
513
		if ( is_admin() ) {
514
			return $params;
515
		}
516
517
		global $wp_registered_widgets;
518
519
		$widget_id   = $params[0]['widget_id'];
520
		$widget_name = $params[0]['widget_name'];
521
522
		if ( 'Text' === $widget_name ) {
523
			$wp_registered_widgets[ $widget_id ]['original_callback'] = $wp_registered_widgets[ $widget_id ]['callback'];
524
			$wp_registered_widgets[ $widget_id ]['callback'] = 'lsx_full_width_widget_custom_callback';
525
		}
526
527
		return $params;
528
	}
529
530
endif;
531
532
add_filter( 'dynamic_sidebar_params', 'lsx_full_width_widget_classes' );
533
534
if ( ! function_exists( 'lsx_full_width_widget_custom_callback' ) ) :
535
536
	/**
537
	 * Filter sidebar widget params, to add the widget_lsx_full_width_alt or widget_lsx_full_width classes to the text widget.
538
	 *
539
	 * @package    lsx
540
	 * @subpackage extras
541
	 */
542
	function lsx_full_width_widget_custom_callback() {
543
		global $wp_registered_widgets;
544
545
		$original_callback_params = func_get_args();
546
		$widget_id = $original_callback_params[0]['widget_id'];
547
548
		$original_callback = $wp_registered_widgets[ $widget_id ]['original_callback'];
549
		$wp_registered_widgets[ $widget_id ]['callback'] = $original_callback;
550
551
		$widget_id_base = $wp_registered_widgets[ $widget_id ]['callback'][0]->id_base;
552
553
		$widget_classname = '';
554
555
		if ( is_callable( $original_callback ) ) {
556
			ob_start();
557
			call_user_func_array( $original_callback, $original_callback_params );
558
			$widget_output = ob_get_clean();
559
560
			echo wp_kses_post( apply_filters( 'lsx_widget_output', $widget_output, $widget_id_base, $widget_classname, $widget_id ) );
561
		}
562
	}
563
564
endif;
565
566
if ( ! function_exists( 'lsx_full_width_widget_output' ) ) :
567
568
	/**
569
	 * Filter sidebar widget params, to add the widget_lsx_full_width_alt or widget_lsx_full_width classes to the text widget.
570
	 *
571
	 * @package    lsx
572
	 * @subpackage extras
573
	 */
574
	function lsx_full_width_widget_output( $widget_output, $widget_id_base, $widget_id ) {
0 ignored issues
show
Unused Code introduced by
The parameter $widget_id is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
575
		if ( 'text' === $widget_id_base ) {
576
			if ( false !== strpos( $widget_output, '<div class="lsx-full-width-alt">' ) ) {
577
				$widget_output = str_replace( 'class="widget widget_text"', 'class="widget widget_text widget_lsx_full_width_alt"', $widget_output );
578
			} elseif ( false !== strpos( $widget_output, '<div class="lsx-full-width">' ) ) {
579
				$widget_output = str_replace( 'class="widget widget_text"', 'class="widget widget_text widget_lsx_full_width"', $widget_output );
580
			}
581
		}
582
583
		return $widget_output;
584
	}
585
586
endif;
587
588
add_filter( 'lsx_widget_output', 'lsx_full_width_widget_output', 10, 3 );
589
590
/**
591
 * Check if the content has a restricted post format that needs to show a full excerpt.
592
 */
593
function lsx_post_format_force_content_on_list() {
594
	$post_formats = apply_filters( 'lsx_post_format_force_content_on_list',
595
		array(
596
			'video' => 'video',
597
			'audio' => 'audio',
598
			'quote' => 'quote',
599
			'link'  => 'link',
600
		)
601
	);
602
	$return = false;
603
	if ( ! has_post_format( $post_formats ) ) {
604
		$return = true;
605
	}
606
	return $return;
607
}
608
609
/**
610
 * Remove the Hentry Class Every
611
 */
612
function lsx_remove_hentry( $classes ) {
613
	if ( 'post' !== get_post_type() ) {
614
		$classes = array_diff( $classes, array( 'hentry' ) );
615
	}
616
	return $classes;
617
}
618
add_filter( 'post_class','lsx_remove_hentry' );
619
620
/**
621
 * Strip Excerpts.
622
 *
623
 */
624
function lsx_strip_excerpt( $content ) {
625
	if ( is_search() || is_archive() || ( is_blog_installed() && ! is_single() && ! is_page() ) ) {
626
		$content = strip_shortcodes( $content );
627
		$content = str_replace( ']]>', ']]&gt;', $content );
628
		$content = strip_tags( $content );
629
	}
630
	return $content;
631
}
632
add_filter( 'the_content', 'lsx_strip_excerpt' );
633
634
/**
635
 * Disable Gutenberg for LSX Custom Post Tpes.
636
 *
637
 */
638
function lsx_disable_gutenberg_product_type( $is_enabled, $post_type ) {
639
	if ( 'testimonial' === $post_type || 'team' === $post_type || 'project' === $post_type ) {
640
		return false;
641
	}
642
643
	return $is_enabled;
644
}
645
add_filter( 'gutenberg_add_edit_link_for_post_type', 'lsx_disable_gutenberg_product_type', 10, 2 );
646
647
/**
648
 * Add the "Blog" link to the breadcrumbs
649
 * @param $crumbs
650
 * @return array
651
 */
652
function lsx_breadcrumbs_blog_link( $crumbs ) {
653
654
	$show_on_front = get_option( 'show_on_front' );
655
656
	if ( 'page' === $show_on_front && ( is_category() || is_tag() ) ) {
657
658
		$blog_page = get_option( 'page_for_posts' );
659
		if ( false !== $blog_page && '' !== $blog_page ) {
660
661
			$new_crumbs = array();
662
			$new_crumbs[0] = $crumbs[0];
663
664
			if ( function_exists( 'woocommerce_breadcrumb' ) ) {
665
				$new_crumbs[1] = array(
666
					0	=> get_the_title( $blog_page ),
667
					1	=> get_permalink( $blog_page ),
668
				);
669
			} else {
670
				$new_crumbs[1] = array(
671
					'text'	=> get_the_title( $blog_page ),
672
					'url'	=> get_permalink( $blog_page ),
673
				);
674
			}
675
			$new_crumbs[2] = $crumbs[1];
676
			$crumbs = $new_crumbs;
677
678
		}
679
	}
680
	return $crumbs;
681
}
682
add_filter( 'wpseo_breadcrumb_links', 'lsx_breadcrumbs_blog_link', 30, 1 );
683
add_filter( 'woocommerce_get_breadcrumb', 'lsx_breadcrumbs_blog_link', 30, 1 );
684