Wp音频播放器的下载按钮

时间:2014-04-19 作者:mahdiar

我想在核心wp音频播放器(mediaelement.js)中添加一个下载按钮。

我怎么能简单地做到这一点?有什么建议吗?

2 个回复
SO网友:birgire

如何使用自定义播放列表模板:

您可以使用自己的模板覆盖播放列表模板:

/**
 * Remove the native playlist template and load our custom template
 * @link http://wordpress.stackexchange.com/q/141767/26350
 */

add_action( \'wp_playlist_scripts\', \'wpse_141767_wp_playlist_scripts\' );

function wpse_141767_wp_playlist_scripts()
{
    remove_action( \'wp_footer\', \'wp_underscore_playlist_templates\', 0 );
    add_action( \'wp_footer\', \'wpse_141767_wp_underscore_playlist_templates\', 0 );
}
其中,修改后的模板定义为:

/**
 * Our custom playlist template.
 */

function wpse_141767_wp_underscore_playlist_templates() {
?>
<script type="text/html" id="tmpl-wp-playlist-current-item">
        <# if ( data.image ) { #>
        <img src="{{ data.thumb.src }}"/>
        <# } #>
        <div class="wp-playlist-caption">
                <span class="wp-playlist-item-meta wp-playlist-item-title">&#8220;{{ data.title }}&#8221;</span>
                <# if ( data.meta.album ) { #><span class="wp-playlist-item-meta wp-playlist-item-album">{{ data.meta.album }}</span><# } #>
                <# if ( data.meta.artist ) { #><span class="wp-playlist-item-meta wp-playlist-item-artist">{{ data.meta.artist }}</span><# } #>
        </div>
</script>
<script type="text/html" id="tmpl-wp-playlist-item">
        <div class="wp-playlist-item">
                <a class="wp-playlist-caption" href="{{ data.src }}">
                        {{ data.index ? ( data.index + \'. \' ) : \'\' }}
                        <# if ( data.caption ) { #>
                                {{ data.caption }}
                        <# } else { #>
                                <span class="wp-playlist-item-title">&#8220;{{{ data.title }}}&#8221;</span>
                                <# if ( data.artists && data.meta.artist ) { #>
                                <span class="wp-playlist-item-artist"> &mdash; {{ data.meta.artist }}</span>
                                <# } #>
                        <# } #>
                </a>
                <# if ( data.meta.length_formatted ) { #>
                <div class="wp-playlist-item-length">{{ data.meta.length_formatted }}</div>
                <# } #>             
        </div>

        <!-- BEGIN CHANGES -->
           <a href="{{ data.src }}" class="wpse-download" download="">download</a>
        <!-- END CHANGES -->

</script>
<?php
}
我们在末尾添加了此部分:

<!-- BEGIN CHANGES -->
   (<a href="{{ data.src }}" class="wpse-download" download="">download</a>)
<!-- END CHANGES -->
您可能还需要添加一个特殊的url来下载文件。

我没有在div.wp-playlist-item 选择器,是因为在其中单击的所有内容都将启动播放器。原因是/wp-includes/js/mediaelement/wp-playlist.js 文件:

events : {
    \'click .wp-playlist-item\' : \'clickTrack\',
    \'click .wp-playlist-next\' : \'next\',
    \'click .wp-playlist-prev\' : \'prev\'
},

clickTrack : function (e) {
    e.preventDefault();

    this.index = this.$( \'.wp-playlist-item\' ).index( e.currentTarget );
    this.setCurrent();
},
下面是我们修改后的播放列表模板的屏幕截图:

Modified playlist template

您可以尝试一些自定义CSS来根据您的需要对此进行修改。

这里有一种黑客,可能需要根据当前主题进行调整:

<style>
    .wpse-download {
        margin-top: -22px;
        margin-left: -16px;
        position: absolute;
    }
    .wp-playlist {
        padding: 25px;
    }
</style>
使用:

<!-- BEGIN CHANGES -->
    <a href="{{ data.src }}" class="wpse-download" download="">
        <i class="fa fa-download" aria-hidden="true"></i>
    </a>
<!-- END CHANGES -->
在Font Awesome面前。

Custom CSS download button

Further customization:

您还可以考虑将自己版本的wp-playlist.js 替换的文件:

\'click .wp-playlist-item\' : \'clickTrack\',
例如:

\'click a.wp-playlist-item-caption\' : \'clickTrack\',
能够将下载链接与歌曲标题放在同一行中。

Update:

更新了屏幕截图并添加了另一个示例。

要确保文件已下载且未显示在浏览器中,我们可以使用download 链接属性。我已将上述内容更新为:

(<a href="{{ data.src }}" download="">download</a>)
空值似乎会将其作为当前文件名下载。

SO网友:KEGBE Charles
<script>
/**
 * Our custom playlist template for mp3 download`.
 */
function wpse_141767_wp_underscore_playlist_templates() {
?>
<script type="text/html" id="tmpl-wp-playlist-current-item">
        <# if ( data.image ) { #>
        <img src="{{ data.thumb.src }}"/>
        <# } #>
        <div class="wp-playlist-caption">
                <span class="wp-playlist-item-meta wp-playlist-item-title">&#8220;{{ data.title }}&#8221;</span>
                <# if ( data.meta.album ) { #><span class="wp-playlist-item-meta wp-playlist-item-album">{{ data.meta.album }}</span><# } #>
                <# if ( data.meta.artist ) { #><span class="wp-playlist-item-meta wp-playlist-item-artist">{{ data.meta.artist }}</span><# } #>
        </div>
</script>
<script type="text/html" id="tmpl-wp-playlist-item">
        <div class="wp-playlist-item">
                <a class="wp-playlist-caption" href="{{ data.src }}">
                        {{ data.index ? ( data.index + \'. \' ) : \'\' }}
                        <# if ( data.caption ) { #>
                                {{ data.caption }}
                        <# } else { #>
                                <span class="wp-playlist-item-title">&#8220;{{{ data.title }}}&#8221;</span>
                                <# if ( data.artists && data.meta.artist ) { #>
                                <span class="wp-playlist-item-artist"> &mdash; {{ data.meta.artist }}</span>
                                <# } #>
                        <# } #>
                </a>
                <# if ( data.meta.length_formatted ) { #>
<div class="wp-playlist-item-length">
<span>
            (<a href="{{ data.src }}"><i class="fa fa-download" title="Download" aria-hidden="true"></i></a>)
        </span>{{ data.meta.length_formatted }}</div>
                <# } #>             
        </div>
</script>
<?php
}
</script>
结束

相关推荐

Error Using Audio plugin

我已经安装了音频插件,以创建Xbrowser播放列表,但出现以下错误jPlayer 2.0.0 : id=\'jquery_jplayer_1\' : Error!到目前为止,我所做的只是创建一个新帖子,使用wordpress音频上传器将音频上传到帖子,使用以下短代码将播放列表添加到帖子,然后发布。[audio layout=\"list\"] 也尝试过[audio]但产生了同样的错误这些文件是。mp3格式,可以在其他播放器中播放。如果相关,该站点存储在本地。