File Editor
Directories:
.. (Back)
compat
content-options
js
responsive-videos
site-logo
social-menu
Files:
content-options.php
devicepx.php
featured-content.php
infinite-scroll.php
responsive-videos.php
site-breadcrumbs.php
site-logo.php
social-links.php
social-menu.php
Create New File
Create
Edit File: responsive-videos.php
<?php /** * Theme Tools: Responsive videos enhancements. * * @package automattic/jetpack */ use Automattic\Jetpack\Assets; if ( ! class_exists( '\Automattic\Jetpack\Classic_Theme_Helper\Main' ) ) { /** * Load the Responsive videos plugin * * @deprecated 13.7 Moved to Classic Theme Helper package. */ function jetpack_responsive_videos_init() { _deprecated_function( __FUNCTION__, 'jetpack-13.7' ); /* If the doesn't theme support 'jetpack-responsive-videos', don't continue */ if ( ! current_theme_supports( 'jetpack-responsive-videos' ) ) { return; } /* If the theme does support 'jetpack-responsive-videos', wrap the videos */ add_filter( 'wp_video_shortcode', 'jetpack_responsive_videos_embed_html' ); add_filter( 'video_embed_html', 'jetpack_responsive_videos_embed_html' ); /* Only wrap oEmbeds if video */ add_filter( 'embed_oembed_html', 'jetpack_responsive_videos_maybe_wrap_oembed', 10, 2 ); add_filter( 'embed_handler_html', 'jetpack_responsive_videos_maybe_wrap_oembed', 10, 2 ); /* Wrap videos in Buddypress */ add_filter( 'bp_embed_oembed_html', 'jetpack_responsive_videos_embed_html' ); /* Wrap Slideshare shortcodes */ add_filter( 'jetpack_slideshare_shortcode', 'jetpack_responsive_videos_embed_html' ); // Remove the Jetpack Responsive video wrapper in embed blocks on sites that support core Responsive embeds. if ( current_theme_supports( 'responsive-embeds' ) ) { add_filter( 'render_block', 'jetpack_responsive_videos_remove_wrap_oembed', 10, 2 ); } } add_action( 'after_setup_theme', 'jetpack_responsive_videos_init', 99 ); /** * Adds a wrapper to videos and enqueue script * * @deprecated 13.7 Moved to Classic Theme Helper package. * * @param string $html The video embed HTML. * @return string */ function jetpack_responsive_videos_embed_html( $html ) { _deprecated_function( __FUNCTION__, 'jetpack-13.7' ); if ( empty( $html ) || ! is_string( $html ) ) { return $html; } // Short-circuit for AMP responses, since custom scripts are not allowed in AMP and videos are naturally responsive. if ( class_exists( 'Jetpack_AMP_Support' ) && Jetpack_AMP_Support::is_amp_request() ) { return $html; } // The customizer video widget wraps videos with a class of wp-video // mejs as of 4.9 apparently resizes videos too which causes issues // skip the video if it is wrapped in wp-video. $video_widget_wrapper = 'class="wp-video"'; $mejs_wrapped = strpos( $html, $video_widget_wrapper ); // If this is a video widget wrapped by mejs, return the html. if ( false !== $mejs_wrapped ) { return $html; } Assets::register_script( 'jetpack-responsive-videos', '_inc/build/theme-tools/responsive-videos/responsive-videos.min.js', JETPACK__PLUGIN_FILE, array( 'in_footer' => true, 'enqueue' => true, 'textdomain' => 'jetpack', 'css_path' => '_inc/build/theme-tools/responsive-videos/responsive-videos.css', ) ); return '<div class="jetpack-video-wrapper">' . $html . '</div>'; } /** * Check if oEmbed is a `$video_patterns` provider video before wrapping. * * @deprecated 13.7 Moved to Classic Theme Helper package. * * @param mixed $html The cached HTML result, stored in post meta. * @param string $url he attempted embed URL. * * @return string */ function jetpack_responsive_videos_maybe_wrap_oembed( $html, $url = null ) { _deprecated_function( __FUNCTION__, 'jetpack-13.7' ); if ( empty( $html ) || ! is_string( $html ) || ! $url ) { return $html; } // Short-circuit for AMP responses, since custom scripts are not allowed in AMP and videos are naturally responsive. if ( class_exists( 'Jetpack_AMP_Support' ) && Jetpack_AMP_Support::is_amp_request() ) { return $html; } $jetpack_video_wrapper = '<div class="jetpack-video-wrapper">'; $already_wrapped = strpos( $html, $jetpack_video_wrapper ); // If the oEmbed has already been wrapped, return the html. if ( false !== $already_wrapped ) { return $html; } /** * The oEmbed video providers. * * An allowed list of oEmbed video provider Regex patterns to check against before wrapping the output. * * @module theme-tools * * @since 3.8.0 * * @param array $video_patterns oEmbed video provider Regex patterns. */ $video_patterns = apply_filters( 'jetpack_responsive_videos_oembed_videos', array( 'https?://((m|www)\.)?youtube\.com/watch', 'https?://((m|www)\.)?youtube\.com/playlist', 'https?://youtu\.be/', 'https?://(.+\.)?vimeo\.com/', 'https?://(www\.)?dailymotion\.com/', 'https?://dai.ly/', 'https?://(www\.)?hulu\.com/watch/', 'https?://wordpress.tv/', 'https?://(www\.)?funnyordie\.com/videos/', 'https?://vine.co/v/', 'https?://(www\.)?collegehumor\.com/video/', 'https?://(www\.|embed\.)?ted\.com/talks/', ) ); // Merge patterns to run in a single preg_match call. $video_patterns = '(' . implode( '|', $video_patterns ) . ')'; $is_video = preg_match( $video_patterns, $url ); // If the oEmbed is a video, wrap it in the responsive wrapper. if ( false === $already_wrapped && 1 === $is_video ) { return jetpack_responsive_videos_embed_html( $html ); } return $html; } /** * Remove the Jetpack Responsive video wrapper in embed blocks. * * @since 7.0.0 * * @deprecated 13.7 Moved to Classic Theme Helper package. * * @param string $block_content The block content about to be appended. * @param array $block The full block, including name and attributes. * * @return string $block_content String of rendered HTML. */ function jetpack_responsive_videos_remove_wrap_oembed( $block_content, $block ) { _deprecated_function( __FUNCTION__, 'jetpack-13.7' ); if ( isset( $block['blockName'] ) && ( str_contains( $block['blockName'], 'core-embed' ) // pre-WP 5.6 embeds (multiple embed blocks starting with 'core-embed'). || 'core/embed' === $block['blockName'] // WP 5.6 embed block format (single embed block w/ block variations). ) ) { $block_content = preg_replace( '#<div class="jetpack-video-wrapper">(.*?)</div>#', '${1}', $block_content ); } return $block_content; } }
Save Changes
Rename File
Rename