PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 14.2.2
Jetpack – WP Security, Backup, Speed, & Growth v14.2.2
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / theme-tools / responsive-videos.php
jetpack / modules / theme-tools Last commit date
compat 2 years ago content-options 1 year ago js 6 years ago responsive-videos 1 year ago site-logo 2 years ago social-menu 2 years ago content-options.php 1 year ago devicepx.php 2 years ago featured-content.php 2 years ago responsive-videos.php 2 years ago site-breadcrumbs.php 2 years ago site-logo.php 2 years ago social-links.php 2 years ago social-menu.php 2 years ago
responsive-videos.php
193 lines
1 <?php
2 /**
3 * Theme Tools: Responsive videos enhancements.
4 *
5 * @package automattic/jetpack
6 */
7
8 use Automattic\Jetpack\Assets;
9
10 if ( ! class_exists( '\Automattic\Jetpack\Classic_Theme_Helper\Main' ) ) {
11 /**
12 * Load the Responsive videos plugin
13 *
14 * @deprecated 13.7 Moved to Classic Theme Helper package.
15 */
16 function jetpack_responsive_videos_init() {
17 _deprecated_function( __FUNCTION__, 'jetpack-13.7' );
18
19 /* If the doesn't theme support 'jetpack-responsive-videos', don't continue */
20 if ( ! current_theme_supports( 'jetpack-responsive-videos' ) ) {
21 return;
22 }
23
24 /* If the theme does support 'jetpack-responsive-videos', wrap the videos */
25 add_filter( 'wp_video_shortcode', 'jetpack_responsive_videos_embed_html' );
26 add_filter( 'video_embed_html', 'jetpack_responsive_videos_embed_html' );
27
28 /* Only wrap oEmbeds if video */
29 add_filter( 'embed_oembed_html', 'jetpack_responsive_videos_maybe_wrap_oembed', 10, 2 );
30 add_filter( 'embed_handler_html', 'jetpack_responsive_videos_maybe_wrap_oembed', 10, 2 );
31
32 /* Wrap videos in Buddypress */
33 add_filter( 'bp_embed_oembed_html', 'jetpack_responsive_videos_embed_html' );
34
35 /* Wrap Slideshare shortcodes */
36 add_filter( 'jetpack_slideshare_shortcode', 'jetpack_responsive_videos_embed_html' );
37
38 // Remove the Jetpack Responsive video wrapper in embed blocks on sites that support core Responsive embeds.
39 if ( current_theme_supports( 'responsive-embeds' ) ) {
40 add_filter( 'render_block', 'jetpack_responsive_videos_remove_wrap_oembed', 10, 2 );
41 }
42 }
43 add_action( 'after_setup_theme', 'jetpack_responsive_videos_init', 99 );
44
45 /**
46 * Adds a wrapper to videos and enqueue script
47 *
48 * @deprecated 13.7 Moved to Classic Theme Helper package.
49 *
50 * @param string $html The video embed HTML.
51 * @return string
52 */
53 function jetpack_responsive_videos_embed_html( $html ) {
54 _deprecated_function( __FUNCTION__, 'jetpack-13.7' );
55
56 if ( empty( $html ) || ! is_string( $html ) ) {
57 return $html;
58 }
59
60 // Short-circuit for AMP responses, since custom scripts are not allowed in AMP and videos are naturally responsive.
61 if ( class_exists( 'Jetpack_AMP_Support' ) && Jetpack_AMP_Support::is_amp_request() ) {
62 return $html;
63 }
64
65 // The customizer video widget wraps videos with a class of wp-video
66 // mejs as of 4.9 apparently resizes videos too which causes issues
67 // skip the video if it is wrapped in wp-video.
68 $video_widget_wrapper = 'class="wp-video"';
69
70 $mejs_wrapped = strpos( $html, $video_widget_wrapper );
71
72 // If this is a video widget wrapped by mejs, return the html.
73 if ( false !== $mejs_wrapped ) {
74 return $html;
75 }
76
77 Assets::register_script(
78 'jetpack-responsive-videos',
79 '_inc/build/theme-tools/responsive-videos/responsive-videos.min.js',
80 JETPACK__PLUGIN_FILE,
81 array(
82 'in_footer' => true,
83 'enqueue' => true,
84 'textdomain' => 'jetpack',
85 'css_path' => '_inc/build/theme-tools/responsive-videos/responsive-videos.css',
86 )
87 );
88
89 return '<div class="jetpack-video-wrapper">' . $html . '</div>';
90 }
91
92 /**
93 * Check if oEmbed is a `$video_patterns` provider video before wrapping.
94 *
95 * @deprecated 13.7 Moved to Classic Theme Helper package.
96 *
97 * @param mixed $html The cached HTML result, stored in post meta.
98 * @param string $url he attempted embed URL.
99 *
100 * @return string
101 */
102 function jetpack_responsive_videos_maybe_wrap_oembed( $html, $url = null ) {
103 _deprecated_function( __FUNCTION__, 'jetpack-13.7' );
104
105 if ( empty( $html ) || ! is_string( $html ) || ! $url ) {
106 return $html;
107 }
108
109 // Short-circuit for AMP responses, since custom scripts are not allowed in AMP and videos are naturally responsive.
110 if ( class_exists( 'Jetpack_AMP_Support' ) && Jetpack_AMP_Support::is_amp_request() ) {
111 return $html;
112 }
113
114 $jetpack_video_wrapper = '<div class="jetpack-video-wrapper">';
115
116 $already_wrapped = strpos( $html, $jetpack_video_wrapper );
117
118 // If the oEmbed has already been wrapped, return the html.
119 if ( false !== $already_wrapped ) {
120 return $html;
121 }
122
123 /**
124 * The oEmbed video providers.
125 *
126 * An allowed list of oEmbed video provider Regex patterns to check against before wrapping the output.
127 *
128 * @module theme-tools
129 *
130 * @since 3.8.0
131 *
132 * @param array $video_patterns oEmbed video provider Regex patterns.
133 */
134 $video_patterns = apply_filters(
135 'jetpack_responsive_videos_oembed_videos',
136 array(
137 'https?://((m|www)\.)?youtube\.com/watch',
138 'https?://((m|www)\.)?youtube\.com/playlist',
139 'https?://youtu\.be/',
140 'https?://(.+\.)?vimeo\.com/',
141 'https?://(www\.)?dailymotion\.com/',
142 'https?://dai.ly/',
143 'https?://(www\.)?hulu\.com/watch/',
144 'https?://wordpress.tv/',
145 'https?://(www\.)?funnyordie\.com/videos/',
146 'https?://vine.co/v/',
147 'https?://(www\.)?collegehumor\.com/video/',
148 'https?://(www\.|embed\.)?ted\.com/talks/',
149 )
150 );
151
152 // Merge patterns to run in a single preg_match call.
153 $video_patterns = '(' . implode( '|', $video_patterns ) . ')';
154
155 $is_video = preg_match( $video_patterns, $url );
156
157 // If the oEmbed is a video, wrap it in the responsive wrapper.
158 if ( false === $already_wrapped && 1 === $is_video ) {
159 return jetpack_responsive_videos_embed_html( $html );
160 }
161
162 return $html;
163 }
164
165 /**
166 * Remove the Jetpack Responsive video wrapper in embed blocks.
167 *
168 * @since 7.0.0
169 *
170 * @deprecated 13.7 Moved to Classic Theme Helper package.
171 *
172 * @param string $block_content The block content about to be appended.
173 * @param array $block The full block, including name and attributes.
174 *
175 * @return string $block_content String of rendered HTML.
176 */
177 function jetpack_responsive_videos_remove_wrap_oembed( $block_content, $block ) {
178 _deprecated_function( __FUNCTION__, 'jetpack-13.7' );
179
180 if (
181 isset( $block['blockName'] )
182 && (
183 str_contains( $block['blockName'], 'core-embed' ) // pre-WP 5.6 embeds (multiple embed blocks starting with 'core-embed').
184 || 'core/embed' === $block['blockName'] // WP 5.6 embed block format (single embed block w/ block variations).
185 )
186 ) {
187 $block_content = preg_replace( '#<div class="jetpack-video-wrapper">(.*?)</div>#', '${1}', $block_content );
188 }
189
190 return $block_content;
191 }
192 }
193