是否只检索mp3并设置一个变量,以便在由single.php模板调用的播放列表中使用?

时间:2015-10-18 作者:Dave Davis

我想填充一个变量$work_ids 带有任何附加MP3文件的ID,以便在自定义播放器中使用(如果需要的话,基于MediaElement.js)。该库包含WAV和我们不想流式传输的每个文件的其他版本,因此我尝试过滤这些文件,并且只在变量中显示MP3(可以有多个,这很好)。以下是我尝试过的(但失败了):

我想这会让我自己滚起来:

$work_ids = get_attached_media( \'audio/mp3\', $post->ID );
不,这不会返回任何对脚本有用的内容。

所以我想,也许我需要加入一些逗号来处理返回的多个MP3,但不是这样的。。。这也没有更好的效果:

$work_ids = join( \',\', wp_list_pluck( get_attached_media( \'audio/mp3\' ), \'ID\' ) );
接下来,我认为是ID没有发出砰砰声,所以我将引用改为更明确的内容:

$work_ids = join( \',\', wp_list_pluck( get_attached_media( \'audio/mp3\' ), $post->ID ) );
又一次失败。

我把这些放在循环的正下方,在那里我画了一个传统的WP播放列表对象[playlist ids=""] 通过短代码。当我插入一个固定ID,或使用另一个浮动变量(不幸的是,它包括WAV!),脚本的这一部分实际上工作得很好,喜欢$submission_attachment_ids, 不管它值多少钱(我想只是确认我的模板可以使用变量)。该变量或任何包含媒体附件ID的变量本身调用并运行自定义播放机,工作正常。

如何过滤WAV,并仅返回MP3作为ID?我只想筛选文件类型。

1 个回复
SO网友:Dave Davis

下面是我为解决这个问题所做的。。。

循环开始后,我插入了以下代码:

<?php 
    global $post;
    if( is_singular() && is_main_query()  && $post->post_type === \'download\' ) {
        $download = new EDD_Download( $post->ID );
        $files = $download->get_files( );
        $submission_attachment_ids = \'\';
        if ( is_array( $files ) ){
            $first = true;
            foreach ( $files as $key => $value ) {
                if ( !isset( $value[ \'attachment_id\' ] ) ){
                    continue;
                }
                if ( $first ){
                    $submission_attachment_ids .= $value[ \'attachment_id\' ];
                    $first = false;
                } else {
                    $submission_attachment_ids .= \',\' . $value[ \'attachment_id\' ];
                }
            }
        } else { 
            die; // no files attached to the download
        }    

        if ( !$submission_attachment_ids || strlen( $submission_attachment_ids ) < 1 ) {
            return die; // no files attached to the download
        };
?>

然后,在内容块的正上方插入了我的播放器调用,将其放在标题下方:

<div id="player" width="100%">  
    <?php echo do_shortcode(\'[playlist captions="false" artists="false" images="false" ids="\'.$submission_attachment_ids.\'"]\');?>
    </div>

相关推荐

将Pemalink结构更改为/%post_id%/%postname%/

我当前正在使用permalink结构:/%年%/%月%/%日%/%postname%/我想将其更改为:/%post\\u id%/%postname%/我希望是:更快(数据库按post\\u id排序?)较短的URL(以及清晰可见的短文,只需去掉%postname%/即可)对搜索引擎优化更加友好-因为我的内容是“常青树”,所以发布日期不相关(并且写在每篇文章上,以及最后的更新日期)-因此这将提供较短的URL,与使用年/月/日结构相比没有任何缺点</问题:WordPress是否自动处理所有301重定向