內容更新於 — 2023-06-17 21:57
我原本很喜歡使用區塊編輯器來嵌入YouTube影片,因為只需要在〔Paragraph〕貼上網址,它就會自動偵測URL類型,嵌入〔響應式〕的YouTube影片;而這個〔響應式〕的影片會按照不同設備的螢幕大小自動顯示最合適的影片寬度,不用擔心影片會超出手機螢幕。但是,它偶爾會鬧脾氣,莫名其妙就無法嵌入!而且之前成功嵌入的影片也會失效,變成一串無法點擊的YouTube影片網址……。雖然還不清楚是什麼樣的原因造成的,但是在我的經驗中,WordPress v.5.4與v5.4.1都偶發過一次,貼上網址後會出現如下圖這樣的畫面,下方會有一串說明為Sorry, this content could not be embedded.
雖然說Gutenberg外掛或區塊編輯器非常方便,無腦貼上即可,不用麻煩地取得〔iframe〕語法,也不用煩惱還要將預設的〔iframe〕語法修改成〔響應式〕的代碼。
如果你的區塊編輯器總是溫順可人,就用力享受它的強大吧~
★延伸閱讀☞Gutenberg/區塊編輯器教學|貼上網址就能自動嵌入36種響應式媒體
倘若當區塊編輯器正好又鬧脾氣的時候,要嘛安裝YouTube外掛,如果和我一樣,不想為了這點小事又多裝外掛,只好重回〔iframe〕語法的懷抱囉~
以往在傳統編輯器〔Classic Editor〕的年代,嵌入YouTube影片往往都會有影片大小與螢幕不合的問題!
比如說,調整好在電腦顯示的影片尺寸之後,到了手機一定會超過螢幕範圍,這是因為YouTube預設的嵌入語法,缺少〔響應式〕的CSS樣式,才會造成非常糟糕的用戶體驗!
以下是YouTube預設的嵌入語法範例,因為傳統編輯器插入影片也是擷取這組語法,寬度與高度必須被固定,所以無法在不同設備中自動縮放比例:
<iframe width="560" height="315" src="https://www.youtube.com/embed/2AEqHyMliew" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
為了打造〔響應式〕的嵌入語法,首要工作就是,丟掉YouTube〔分享〕按鈕所提供的〔嵌入〕代碼,準備好YouTube的【影片ID】。我們要設計一組〔響應式〕的嵌入語法,再將YouTube的【影片ID】放入語法中。
這組〔響應式〕的嵌入語法在區塊編輯器以及傳統編輯器〔Classic Editor〕都可以使用,同時解決傳統編輯器插入影片無法自動縮放合適尺寸的糟糕體驗!
以下介紹4種不同樣式的〔響應式〕YouTube影片語法:
這種方式在區塊編輯器中的〔Shortcode〕直接貼上語法最快速!
下面影片是快速操作方式:
如果習慣使用傳統編輯器〔Classic Editor〕,也可參考優雅筆寄的操作教學。
〔響應式YouTube影片產生器〕幫我們生成的CSS合併HTML語法,可以嵌入讓不同設備寬度都能適合的影片;不過,它的語法其實還有可以改進的空間…
https://www.youtube.com/watch?v=2AEqHyMliew
影片網址尾巴的2AEqHyMliew,是每個影片都有的專屬ID;在下面的代碼中,要將2AEqHyMliew改成自己的【影片ID】。
別忘了將2AEqHyMliew改成你自己的【影片ID】
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style><div class='embed-container'><iframe src='https://www.youtube.com/embed/2AEqHyMliew' frameborder='0' allowfullscreen></iframe></div>
在上面這段語法中,要修改的是☞刪除 frameborder=‘0’
以往控制是否要顯示邊框,通常會使用【frameborder】屬性來定義;但是因為HTML5已不支援【frameborder】,所以會建議刪除上面語法中的 frameborder='0'
。
修改後的的代碼如下,別忘了將2AEqHyMliew改成你自己的【影片ID】:
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style><div class='embed-container'><iframe src='https://www.youtube.com/embed/2AEqHyMliew' allowfullscreen></iframe></div>
修改前後的差異在於:【影片ID】2AEqHyMliew的後面直接接上' allowfullscreen
將 border: 0 none;
放進這一段CSS代碼{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
,可放在 height: 100%;
的後面。
放進去之後的代碼如下, height: 100%;
的後面多了 border: 0 none;
:
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0 none; }</style><div class='embed-container'><iframe src='https://www.youtube.com/embed/2AEqHyMliew' allowfullscreen></iframe></div>
以上代碼可以直接複製使用,別忘了將2AEqHyMliew改成你自己的【影片ID】
既然都已經修改了代碼,我們還可以擁有更多的追求,比如說:想要影片可以〔循環播放〕!
我們總是希望訪客只專注在自己的影片與網站內容,但是YouTube的預設是每當影片暫停播放、或者是結束播放,都會出現其他YouTube用戶的推薦影片,這樣可能會讓訪客前往觀看別人的影片,而忽略了我們的文章內容,甚至是離開網站…
但是呢,只要加入循環播放的語法,它就會不斷播放我們嵌入的那支影片;除此之外,即使訪客按了暫停播放,自動彈出的〔更多影片〕,也只會出現我們自己YouTube帳戶裡的其他影片,再也不會出現其他帳戶的影片囉~
一樣拿前面修改過後的語法當修改範例:
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0 none; }</style><div class='embed-container'><iframe src='https://www.youtube.com/embed/2AEqHyMliew' allowfullscreen></iframe></div>
從上方的代碼中找到【影片ID】,示範的【影片ID】為2AEqHyMliew,接著在2AEqHyMliew與後面接著的 allowfullscreen>
之間,要插入〔循環播放〕的語法:?rel=0&hd=1&autoplay=1&loop=1&playlist=2AEqHyMliew
插入之後就會變成下面這樣:
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style><div class='embed-container'><iframe src='https://www.youtube.com/embed/2AEqHyMliew?rel=0&hd=1&loop=1&playlist=2AEqHyMliew' allowfullscreen></iframe></div>
為了要達到〔循環播放〕的目的,語法中的尾巴也有一組【影片ID】,所以整段語法中,【影片ID】一共會出現2次。
如果你沒把握自己添加的話,也可以直接複製上面那段加入〔循環播放〕的響應式嵌入代碼。
請注意,上面語法中一共有2個2AEqHyMlie,這2個都要改成你自己的【影片ID】哦。
除了〔循環播放〕之外,有的人可能會想要〔自動播放〕的功能,方便訪客不用再點擊〔播放鍵〕,又或者是希望能夠留住訪客的目光…
以下的做法是基於前面的〔循環播放〕語法,再加入〔自動播放〕的屬性autoplay=1
請注意:自動播放的屬性只對電腦瀏覽有效,手機瀏覽無法自動播放唷~
加入之後的語法如下:
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style><div class='embed-container'><iframe src='https://www.youtube.com/embed/2AEqHyMliew?rel=0&hd=1&autoplay=1&loop=1&playlist=2AEqHyMliew' allow="autoplay; encrypted-media" allowfullscreen></iframe></div>
和〔循環播放〕的代碼一樣,裡面一共有2個2AEqHyMliew,這2個都要改成你自己的影片ID。
以上自訂的這些播放屬性,都來自於YouTube的文檔,還有許多其他的功能,有興趣的人可以自己玩玩看,其實蠻有趣的☞YouTube嵌入影片可用屬性
以上四種嵌入語法,點這裡可以看實際嵌入效果。
前面示範的四種嵌入方法其實也非常容易了,只要整塊複製之後,在區塊編輯器的〔Shortcode〕、或者是傳統編輯器〔純文字編輯〕貼上,最後再將2AEqHyMliew修改成自己的【影片ID】就完事了!
但是當網站或者是文章中有許多影片的時候,是可以考慮將這些需要重複使用的CSS語法放到主題的CSS裡面,如此可以讓頁面中的程式碼更輕巧也更乾淨,網頁開啟的速度也會相對更快。
其實前面示範的四種嵌入語法,屬於CSS合併HTML的語法。因為我們需要將嵌入媒體的樣式定義為〔響應式〕,所以需要使用CSS來定義樣式;但是又需要將語法以HTML的型態放在文章中使用,所以就需要在CSS語法的前後使用<style>包覆,便能與HTML合併使用。
就拿前面自訂的第❹種〔可循環播放+自動播放的響應式嵌入語法〕做示範:
前半段〔粉色框框內〕是CSS樣式語法,用來控制影片的樣式,目的是將嵌入的影片設定為〔響應式〕。
後半段〔綠色框框內〕是嵌入指定CSS樣式的影片語法,我們在這一段加入了〔循環播放〕以及〔自動播放〕的屬性。
因為前面示範的的4種語法,已經將CSS樣式用<style>包覆,合併到HTML語法裡面,所以可以直接在編輯文章的時候使用〔Shortcode〕或〔純文字HTML〕的方式,貼上這一整段的HTML語法。
上圖中前半段〔粉色框框內〕的CSS樣式語法,其實是可以放在主題的自訂CSS樣式中,如此可以一次控制全站的影片樣式,不用每一個影片不斷重複貼上同樣的CSS語法。
因為CSS樣式可以自訂許多不同的規則,整個樣式首尾以 {包覆。
放在第一個 {
前面的.embed-container
,就是CSS樣式的名稱,這個名稱可以自己隨便取。
所以在〔粉色框框內〕,最前面的.embed-container
就是CSS樣式的名稱,可以自己修改;比如說,幫它取個自己能辨別的名字叫做:video-loop
,來表示這個CSS樣式是給〔循環播放的影片〕使用。
修改之後就會變成.video-loop {
,也就是將video-loop
放在【.】與【 {】之間。
請注意,自訂的CSS樣式名稱前面一定要有【.】哦!
修改名稱之後,整段CSS就變成下面這樣:
.video-loop { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
每當為CSS樣式命名之後,在〔綠色框框內〕的HTML語法中,就可以在前後加上<div>
,將〔HTML〕的樣式指定給某個CSS。
在圖片中,〔綠色框框內〕的語法是嵌入指定CSS樣式為〔響應式〕的影片語法。
〔黃色背景〕的範圍就是嵌入YouTube影片需要的/iframe
語法。
〔紫色背景〕的範圍是用div將/iframe的樣式定義給前半段〔粉色框框內〕的〔響應式〕CSS。
圖中的CSS樣式名稱為embed-container
,所以在〔HTML語法〕中,用<div class='embed-container'>
以及</div>
來包覆</iframe>
語法,就是為了將</iframe>
語法的樣式指定給〔粉色框框內〕名為embed-container
的CSS樣式。
將控制影片響應樣式的CSS語法放在主題的自訂CSS樣式中,如此一來,在編輯文章的頁面中,只需要放入後半段用div包覆的HTML語法就可以了。
操作時間 2 minutes
先將〔粉色框框內〕的CSS樣式語法排列成圖中的〔直式〕版型。
重新排列後的語法如下(可直接複製,不需要再修改):.embed-container {
position: relative;
padding-bottom: 56.25%;
height: 0;
overflow: hidden;
max-width: 100%;
}
.embed-container iframe,
.embed-container object,
.embed-container embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border: 0 none;
}
路徑為WordPress admin☞Appearance☞Customize☞Additional CSS
在空白處貼上【STEP 1】所排列成直式的CSS語法即可。
因為前半段〔粉色框框內〕的CSS樣式語法已經被放在主題CSS樣式中,所以每次要在文章或頁面中嵌入影片時,只需要將〔綠色框框內〕內的嵌入影片語法,放在區塊編輯器的〔Shortcode〕或者是傳統編輯器〔純文字〕就可以了。
因為〔粉色框框內〕內的CSS樣式已經在主題的自訂CSS中統一指定;而〔綠色框框內〕的語法,前後都使用</div>
包覆,目的是為了將樣式指定為名為embed-container
的CSS,所以編輯文章的時候,直接在區塊編輯器的〔Shortcode〕或者是傳統編輯器〔純文字〕貼上〔綠色框框內〕的語法就可以了。
一旦在主題內自訂一組CSS樣式給影片使用,以後在文章中嵌入影片時,只需要貼上下面的語法即可。
請注意:語法中的2AEqHyMliew要改成自己的【影片ID】
<div class='embed-container'><iframe src='https://www.youtube.com/embed/2AEqHyMliew' allowfullscreen></iframe></div>
<div class=’embed-container’><iframe src=’https://www.youtube.com/embed/2AEqHyMliew?rel=0&hd=1&loop=1&playlist=2AEqHyMliew’ encrypted-media” allowfullscreen></iframe></div>
<div class='embed-container'><iframe src='https://www.youtube.com/embed/2AEqHyMliew?rel=0&hd=1&autoplay=1&loop=1&playlist=2AEqHyMliew' allow="autoplay; encrypted-media" allowfullscreen></iframe></div>
以上三種語法中,別忘了將2AEqHyMliew修改成自己的【影片ID】
▬後記▬
其實iframe語法嵌入不只能嵌入其他網站的媒體,也可以嵌入網頁上的任何內容,真的很方便。
但是要特別留意來源網站的可靠性,否則很容易淪為來路不明網站的惡意工具…
Gutenberg外掛與區塊編輯器也是使用iframe語法來嵌入其他網站的內容,但是它目前只支援36種來源網站的URL,也就是說,同時也自動幫我們篩選了來源網站的可靠性。
倘若使用自訂的iframe語法來嵌入其他網站的內容時,就得靠自己去把關了☞只嵌入可靠網站的內容,像是YouTube、facebook、Instagram、twitter、flickr、Spotify…等等的已經被WordPress支援的那些網站,就不用太擔心了!
響應式的影片嵌入語法 以及 如何在主題中自訂CSS 就介紹到這裡了! 如果有任何問題, 歡迎在下方的留言板討論指教囉!
Copyright ©miriammibao.com all rights reserved|Designed by MiriamMibao温唯 Since 2014.