WordPress添加背景音樂plus教程


幾天前我寫了一篇WordPress自定義美化的文章,文中第三個添加背景音樂的方法我總是覺得不夠好,因為添加一首背景音樂每次進入都是響起同一首歌,即便是我特別喜歡,聽久了也會覺得很厭,而且原來只實現了音樂,沒有添加歌名,訪客也不知道正在播放的是什么歌,所以我決定要再改一改。

對於背景音樂這個部件,我心里的構思是有一個音樂庫,歌曲由我上傳到存儲介質中,打開網頁部件自動從存儲介質中讀取所有音樂,並且自動播放第一首,一曲結束播放下一首,部件要能顯示正在播放的音樂名,顯示所有音樂列表,點擊列表中的音樂名能夠實現切歌。

懷揣着滿滿的憧憬,我開始碼代碼:
顯示歌曲名用個span標簽來實現,通過innerHTML來進行更改,沒什么好說的。
音樂列表用無序列表,項目符號設置為none,有幾首歌添加幾個li
對每個li添加一個鼠標點擊監聽事件onclick
js腳本對onclick進行實現,通過li.innerHTML與歌名進行對比,相等既更改Audio標簽的src屬性,更改歌名,對Audio音頻進行重載

代碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
&nbsp;&nbsp;正在播放《< span id = "nameofmusic" >歌名一</ span >》
< audio src = "歌曲鏈接一" autoplay = "autoplay" controls = "controls" loop = "loop" preload = "auto" id = "bgAudio" >
你的瀏覽器不支持背景音樂,請更換瀏覽器!!!
</ audio >
<!--背景音樂音量-->
< script >document.getElementById("bgAudio").volume = 0.2;</ script >
<!--音樂列表-->
< ul style = "list-style-type: none;" >
     < li id = "music1" name = "music1" onclick = "changemusic(this)" >歌名一</ li >
     < li id = "music2" name = "music2" onclick = "changemusic(this)" >歌名二</ li >
     < li id = "music3" name = "music3" onclick = "changemusic(this)" >歌名三</ li >
</ ul >
< script type = "text/javascript" >
     function changemusic(music){
         if(music.innerHTML==("歌名一")){
             document.getElementById("bgAudio").src="歌曲鏈接一";
             document.getElementById("nameofmusic").innerHTML=("歌名一");
             document.getElementById("bgAudio").load();
         }
         if(music.innerHTML==("歌名二")){
             document.getElementById("bgAudio").src="歌曲鏈接二";
             document.getElementById("nameofmusic").innerHTML=("歌名二");
             document.getElementById("bgAudio").load();
         }
         if(music.innerHTML==("歌名三")){
             document.getElementById("bgAudio").src="歌曲鏈接三";
             document.getElementById("nameofmusic").innerHTML=("歌名三");
             document.getElementById("bgAudio").load();
         }
     }
</ script >

Before:

After:

這就實現了一個簡易的HTML音樂播放器了,問題是並沒有達到一開始的構想啊,一開始可是構思着能夠從存儲介質中讀取音頻的。
我的音頻文件使用的是騰訊雲COS對象存儲,騰訊雲提供了XML API,可惜不會用。

打開XML API鏈接,顯示的內容讓我想起了我之前通過必應接口獲取每日美圖(可參考文章:wordpress使用必應每日一圖作登錄頁面背景/)時也用過類似的XML API,那是不是改一改必應那個php就能實現呢?

經過一番嘗試,獲得以下代碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
     $str = file_get_contents ( 'XML API鏈接' );
if (preg_match( "/music(.+?).mp3/" , $str , $matches )) {  //正則表達式獲取文件名
     $musicurl = '對象存儲域名' . $matches [0];  //拼接歌曲URL
}
if ( $musicurl ) {
     header( 'Content-Type: audio/mp3' );  //瀏覽器將根據這個屬性進行解析
     @ob_end_clean();
     @readfile( $musicurl );
     @ flush ();
     @ob_flush();
     exit ();
} else {
     exit ( 'error' );
}
?>

以上代碼實現了從XML API中讀取排在第一位的歌曲,但是只能傳遞一首歌曲
比如這個示例

“革命尚未成功,同志仍需努力”
暫時只能先這樣了,等我研究研究javascript如何讀取XML文件中的信息再來戰。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM