在帖子/页面内容中嵌入播放列表

时间:2017-08-24 作者:Nguyen Viet

我经常使用get_media_embedded_in_content 将音频或视频嵌入帖子或页面内容。但它似乎不适用于播放列表。我试过这个代码

$main_content = apply_filters( \'the_content\', get_the_content() );
$media = get_media_embedded_in_content( $main_content, array(
    \'audio\',
    \'video\',
    \'playlist\',
) );
音频标签中没有任何内容:

 string \'<audio controls="controls" preload="none" width="618"></audio>\'
有可能做到吗?谢谢你的帮助!

1 个回复
最合适的回答,由SO网友:birgire 整理而成

这个get_media_embedded_in_content() 使用正则表达式匹配输入标记,但播放列表的HTML不是由单个标记生成的,而是由以下标记构成<div>, <script>, <noscript>, <ol>, <li>.

最近我发布了一个答案get post playlist like get_post_gallery() 您可以查看,看看是否有帮助。它介绍了自定义wpse_get_post_playlists() 作用

我们当然可以针对这些部分:

<div class="wp-playlist...">...</div>
使用正则表达式,但我们必须注意,第一个实例可以包含其上方的脚本部分,如:

<!--[if lt IE 9]><script>document.createElement(\'audio\');</script><![endif]-->
另一种方法是包装播放列表短代码的输出,例如:。

<!--wpse-playlist--> ... <!--/wpse-playlist-->
然后使用正则表达式仅提取其中的这些部分。

下面是一个如何包装播放列表短代码输出的示例:

add_shortcode( \'playlist\', function( $attr = [], $content = null )
{
    return sprintf( 
        \'<!--wpse-playlist-->%s<!--/wpse-playlist-->\',
        wp_playlist_shortcode( $attr )
    );
} );

结束

相关推荐

如何删除mediaelement.js添加的音频播放器样式?

我正在使用mediaelement。WordPress中的js CSS,并注意到一个样式属性正在添加到我的.mejs-container 要素我假设这是通过JavaScript添加的,因为宽度和高度值似乎是动态的。这是我的源代码中正在输出的内容:<div id=\"mep_0\" class=\"mejs-container svg mejs-audio\" tabindex=\"0\" role=\"application\" aria-label=\"Audio Player\" style=\