2016-04-26 23 views
-1

所以我有一個mediaelement.js音頻播放器,我使用高級自定義字段插件,我希望能夠顯示播放器上當前曲目的標題,這裏是我的代碼WordPress的高級自定義字段中繼器顯示標題異地的循環

<audio class="mejs-new" style="width: 100%; height: auto;" controls width="100%" height="auto"> 

    <?php if(get_field('audio_repeater')): ?> 

     <?php while(has_sub_field('audio_repeater')): ?> 

      <?php $title = get_sub_field('music_title'); ?> 
      <source src="<?php the_sub_field('music_url'); ?>" title="<?php echo $title; ?>" type="audio/mp3"> 
      <p><?php echo $title; ?></p> 
     <?php endwhile; ?> 

     <?php endif; ?> 
</audio> 

編輯..

我試圖呼應音頻標籤之外的冠軍,但它只是ECH oes第二首曲目標題,並且在改變曲目時不會改變。

+0

什麼不是特別工作? –

+0

我不知道如何在音頻播放器上顯示標題,我試圖在循環之外回顯$標題,但它不起作用 – Frank

+0

好吧我想我明白了。你非常接近,看到我的答案。 –

回答

0

如果我理解正確,您希望將標題移動到<audio />標記之外,但您只能從循環中獲取標題。

實際上你幾乎就是這樣 - 最簡單的方法是在循環中將標題設置爲變量,而您已經在循環中($title = get_sub_field('music_title');)。所以現在,你需要做的就是在你需要的時候回顯變量。

因爲在訪問循環中的函數時已經設置了變量,所以現在可以在不需要循環的情況下回顯該變量。

例如:

<?php endif; ?> 
</audio> 

<p><?php echo $title; ?></p> 

編輯

我以爲你只有一個冠軍,我也沒有問,爲什麼你使用一箇中繼器與一個標題:)打印出之後的標題列表中,您可以使用類似的方法,但此時需要保存循環的結果,然後再次循環。

最簡單這樣做的方法是重複整個循環代碼,但只打印標題,但這有點低效。理想情況下,我們只應該獲得領域一次。這裏是另一種方法做這件事:

<?php $audio_repeater = get_field("audio_repeater"); ?> 

<audio class="mejs-new" style="width: 100%; height: auto;" controls width="100%" height="auto"> 

    <?php if((array) count($audio_repeater)): ?> 

     <?php foreach($audio_repeater as $audio_source): ?> 

      <source src="<?php echo $audio_source["music_url"]; ?>" title="<?php echo $audio_source["music_title"]; ?>" type="audio/mp3"> 

     <?php endforeach; ?> 

     <?php endif; ?> 
</audio> 

<?php foreach($audio_repeater as $audio_source): ?> 
    <p><?php echo $audio_source["music_title"]; ?></p> 
<?php endforeach; ?> 

在這個例子中,我們在頂部一次抓住了整個ACF中繼器,並將其分配給一個變量。然後我們檢查它是否有物品,並循環這些物品。

這是一種使用ACF中繼器的替代方法,它可能不像使用循環函數那麼容易,但是當你移動一些東西時它更具可擴展性。

+0

我已經試過這個,但它只響應第二軌道標題,而不是第一個或任何其他如果我點擊播放列表 – Frank

+0

哦,明白了。你沒有提到這一點。請隨時提及您在問題中嘗試過的內容。我會更新我的答案。 –

+0

我已經添加到我的文章。 – Frank

相關問題