修改后台编辑器上传视频的[video]短代码为video标签 支持小程序视频播放

转载 墨小梅  2018-12-26 21:22:42  阅读 1781 次 评论 0 条
摘要:

WordPress 后台编辑器上传视频的时候是以video短代码返回到内容里的,这样子有些小程序没法识别,所以需要把短代码改成video标签。将以下代码加入到主题的functions.php里:remove_shortcode( 'video', 'wp_video_shortcode' );add_shortcode( 'video', 'MBT_video_shortcode'&

WordPress 后台编辑器上传视频的时候是以video短代码返回到内容里的,这样子有些小程序没法识别,所以需要把短代码改成video标签。

将以下代码加入到主题的functions.php里:

remove_shortcode( 'video', 'wp_video_shortcode' );add_shortcode( 'video', 'MBT_video_shortcode' );function MBT_video_shortcode( $attr, $content = '' ) {global $content_width;$post_id = get_post() ? get_the_ID() : 0;static $instance = 0;$instance++;$override = apply_filters( 'wp_video_shortcode_override', '', $attr, $content, $instance );if ( '' !== $override ) {return $override;}$video = null;$default_types = wp_get_video_extensions();$defaults_atts = array('src' => '','poster' => '','loop' => '','autoplay' => '','preload' => 'metadata','width' => 640,'height' => 360,//'class' => 'wp-video-shortcode',);foreach ( $default_types as $type ) {$defaults_atts[$type] = '';}$atts = shortcode_atts( $defaults_atts, $attr, 'video' );if ( is_admin() ) {if ( $atts['width'] > $defaults_atts['width'] ) {$atts['height'] = round( ( $atts['height'] * $defaults_atts['width'] ) / $atts['width'] );$atts['width'] = $defaults_atts['width'];}} else {if ( ! empty( $content_width ) && $atts['width'] > $content_width ) {$atts['height'] = round( ( $atts['height'] * $content_width ) / $atts['width'] );$atts['width'] = $content_width;}}$is_vimeo = $is_youtube = false;$yt_pattern = '#^https?://(?:www.)?(?:youtube.com/watch|youtu.be/)#';$vimeo_pattern = '#^https?://(.+.)?vimeo.com/.*#';$primary = false;if ( ! empty( $atts['src'] ) ) {$is_vimeo = ( preg_match( $vimeo_pattern, $atts['src'] ) );$is_youtube = ( preg_match( $yt_pattern, $atts['src'] ) );if ( ! $is_youtube && ! $is_vimeo ) {$type = wp_check_filetype( $atts['src'], wp_get_mime_types() );if ( ! in_array( strtolower( $type['ext'] ), $default_types ) ) {return sprintf( '<a class="wp-embedded-video" href="%s">%s</a>', esc_url( $atts['src'] ), esc_html( $atts['src'] ) );}}if ( $is_vimeo ) {wp_enqueue_script( 'mediaelement-vimeo' );}$primary = true;array_unshift( $default_types, 'src' );} else {foreach ( $default_types as $ext ) {if ( ! empty( $atts[ $ext ] ) ) {$type = wp_check_filetype( $atts[ $ext ], wp_get_mime_types() );if ( strtolower( $type['ext'] ) === $ext ) {$primary = true;}}}}if ( ! $primary ) {$videos = get_attached_media( 'video', $post_id );if ( empty( $videos ) ) {return;}$video = reset( $videos );$atts['src'] = wp_get_attachment_url( $video->ID );if ( empty( $atts['src'] ) ) {return;}array_unshift( $default_types, 'src' );}$library = apply_filters( 'wp_video_shortcode_library', 'mediaelement' );if ( 'mediaelement' === $library && did_action( 'init' ) ) {wp_enqueue_style( 'wp-mediaelement' );wp_enqueue_script( 'wp-mediaelement' );wp_enqueue_script( 'mediaelement-vimeo' );}if ( 'mediaelement' === $library ) {if ( $is_youtube ) {$atts['src'] = remove_query_arg( 'feature', $atts['src'] );$atts['src'] = set_url_scheme( $atts['src'], 'https' );} elseif ( $is_vimeo ) {$parsed_vimeo_url = wp_parse_url( $atts['src'] );$vimeo_src = 'https://' . $parsed_vimeo_url['host'] . $parsed_vimeo_url['path'];$loop = $atts['loop'] ? '1' : '0';$atts['src'] = add_query_arg( 'loop', $loop, $vimeo_src );}}$atts['class'] = apply_filters( 'wp_video_shortcode_class', $atts['class'], $atts );$html_atts = array(//'class' => $atts['class'],//'id' => sprintf( 'video-%d-%d', $post_id, $instance ),//'width' => absint( $atts['width'] ),//'height' => absint( $atts['height'] ),'poster' => esc_url( $atts['poster'] ),'loop' => wp_validate_boolean( $atts['loop'] ),'autoplay' => wp_validate_boolean( $atts['autoplay'] ),//'preload' => $atts['preload'],);foreach ( array( 'poster', 'loop', 'autoplay', 'preload' ) as $a ) {if ( empty( $html_atts[$a] ) ) {unset( $html_atts[$a] );}}$attr_strings = array();foreach ( $html_atts as $k => $v ) {$attr_strings[] = $k . '="' . esc_attr( $v ) . '"';}$html = '';$fileurl = '';foreach ( $default_types as $fallback ) {if ( ! empty( $atts[ $fallback ] ) ) {if ( empty( $fileurl ) ) {$fileurl = $atts[ $fallback ];}if ( 'src' === $fallback && $is_youtube ) {$type = array( 'type' => 'video/youtube' );} elseif ( 'src' === $fallback && $is_vimeo ) {$type = array( 'type' => 'video/vimeo' );} else {$type = wp_check_filetype( $atts[ $fallback ], wp_get_mime_types() );}$url = add_query_arg( '_', $instance, $atts[ $fallback ] );}}$html .= sprintf( '<video %s src="'.esc_url( $url ).'" controls="controls">', join( ' ', $attr_strings ) );$html .= '</video>';$width_rule = '';if ( ! empty( $atts['width'] ) ) {$width_rule = sprintf( 'width: %dpx;', $atts['width'] );}//$output = sprintf( '<div style="%s" class="wp-video">%s</div>', $width_rule, $html );$output = $html;return apply_filters( 'MBT_video_shortcode', $output, $atts, $video, $post_id, $library );}


本文地址:https://yunxdzsw.com/?id=48
温馨提示:文章内容系作者个人观点,不代表大大の个人博客对观点赞同或支持。
版权声明:本文为转载文章,来源于 墨小梅 ,版权归原作者所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?