本地“播放列表”短码随机播放...多么?

时间:2014-09-11 作者:ginolin

我在我的网站上使用了漂亮的短代码“playlist”,但我想随机播放我的音频文件。

我使用的是:

[播放列表tracklist=“false”images=“false”artists=“false”id=“7691769076887687768685768476837682768176807679767876767676743978364734088139512161214121112101209120812071819758996663642641”]

如何进行随机播放,也许还可以与爸爸jQuery一起?

4 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

我删除了所有重复的和不必要的东西,看看奥托或凯撒的答案,这是一个非常简单的解决方案。

SO网友:Otto

看起来有一个bug,而且核心代码中的文档编写不正确。然而,有一个解决方案应该适用于未来以及可能对core进行的任何修复。

这也很简单:

在短代码中使用orderby=“rand”。

就这么简单。

[playlist orderby="rand" tracklist="false" images="false" artists="false" ids="7691,7690,7688,7687,7686,7685,7684,7683,7682,7681,7680,7679,7678,7677,7676,7674,3978,3647,3408,1395,1217,1216,1214,1213,1211,1210,1209,1208,1207,1206,1181,975,899,668,663,642,641"]

SO网友:bonger

Here\'s a shuffle

add_action( \'wp_footer\', function () {
?>
<script>
jQuery(function ($) {
    var playlist = $(\'.wp-playlist\'); // Tune this if more than one.
    var tracks = $(\'.wp-playlist-tracks .wp-playlist-item\', playlist);
    var last_shuffle = -1;
    var shuffle = function () {
        var i = Math.floor(Math.random() * tracks.length);
        if (i == last_shuffle) i = (i + 1) % tracks.length;
        last_shuffle = i;
        tracks.get(i).click();
    };
    shuffle();
    $(\'.mejs-mediaelement audio\', playlist).on(\'ended\', function (event) {
        shuffle();
    });
});
</script>
<?php
});
SO网友:kaiser

随机顺序

根据我在source中读到的内容,有一个参数对此负责:

\'order\' => \'RAND\',
如果您使用此选项orderby 值将设置为none.

编辑

好的,核心代码告诉我们应该这样做:

if ( \'RAND\' == $atts[\'order\'] ) {
    $atts[\'orderby\'] = \'none\';
}
但这是not true. 事实上,您必须设置orderby 值到rand, 当短代码调用时get_posts() 这就是以随机顺序返回帖子的原因。简而言之:core的功能RAND 完全没有必要(而且令人困惑)。

如果要筛选所有的短码属性,请使用默认值并始终设置参数playlist 短代码调用,然后执行以下操作:

add_action( \'shortcode_atts_playlist\', function( $output, $defaults, $custom )
{
    // do some array_merge() or wp_parse_args() here
    return $output;
}, 10, 3 );
如果要覆盖playlist 使用完全自定义的短代码的短代码,继续使用短代码-将以下筛选器的第一个参数作为任何内容返回,但不要返回空字符串:

add_filter( \'post_playlist\', function( $playlist = \'\', $attr )
{
    return $playlist;
}, 10, 2 );
调试短代码如果遇到问题,某些参数不起作用,那么可能是插件或主题错误。看看shortcode_atts(). 然后将过滤器的内容转储到上面显示的回调中。

结束

相关推荐

Echo HTML in custom shortcode

我写了一个我正在努力完善的短代码。它基本上只是得到一个书签列表并打印出来。但我需要根据定义的类型在其周围添加HTML。extract(shortcode_atts(array(\'cat\' => \'\', \'type\' => \'\'), $atts)); $bookmarks = get_bookmarks( array( \'orderby\' => \'name\', \'order\' => \'ASC\',