贊助商連結

我原本很喜歡使用區塊編輯器來嵌入YouTube影片,因為只需要在〔Paragraph〕貼上網址,它就會自動偵測URL類型,嵌入〔響應式〕的YouTube影片;而這個〔響應式〕的影片會按照不同設備的螢幕大小自動顯示最合適的影片寬度,不用擔心影片會超出手機螢幕。但是,它偶爾會鬧脾氣,莫名其妙就無法嵌入!而且之前成功嵌入的影片也會失效,變成一串無法點擊的YouTube影片網址……。雖然還不清楚是什麼樣的原因造成的,但是在我的經驗中,WordPress v.5.4與v5.4.1都偶發過一次,貼上網址後會出現如下圖這樣的畫面,下方會有一串說明為Sorry, this content could not be embedded.

embed failed

雖然說Gutenberg外掛區塊編輯器非常方便,無腦貼上即可,不用麻煩地取得〔iframe〕語法,也不用煩惱還要將預設的〔iframe〕語法修改成〔響應式〕的代碼。
如果你的區塊編輯器總是溫順可人,就用力享受它的強大吧~

★延伸閱讀☞Gutenberg/區塊編輯器教學|貼上網址就能自動嵌入36種響應式媒體

倘若當區塊編輯器正好又鬧脾氣的時候,要嘛安裝YouTube外掛,如果和我一樣,不想為了這點小事又多裝外掛,只好重回〔iframe〕語法的懷抱囉~

4招免外掛嵌入響應式YouTube影片

以往在傳統編輯器〔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〕直接貼上語法最快速!

  1. 先把網址貼在〔響應式YouTube影片產生器〕的YouTube Page URL欄位中
  2. 讓它幫我們產生〔響應式〕的CSS合併HTML代碼
  3. 再將這段代碼複製貼回區塊編輯器的〔Shortcode〕中
  4. 收工~

下面影片是快速操作方式:


如果習慣使用傳統編輯器〔Classic Editor〕,也可參考優雅筆寄操作教學


❷自訂CSS,讓它更完美吧!

〔響應式YouTube影片產生器〕幫我們生成的CSS合併HTML語法,可以嵌入讓不同設備寬度都能適合的影片;不過,它的語法其實還有可以改進的空間…

示範的YouTube影片網址如下:

https://www.youtube.com/watch?v=2AEqHyMliew

影片網址尾巴的2AEqHyMliew,是每個影片都有的專屬ID;在下面的代碼中,要將2AEqHyMliew改成自己的【影片ID】。

〔響應式YouTube影片產生器〕生成的響應式語法如下:

別忘了將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,並且在CSS中加入border: 0 none;

以往控制是否要顯示邊框,通常會使用【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

如果想要去掉邊框,可以在 CSS 中加入border: 0 none;

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-stop-at-other-videos

我們總是希望訪客只專注在自己的影片與網站內容,但是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嵌入影片可用屬性

以上四種嵌入語法,點這裡可以看實際嵌入效果


將CSS放在主題中精簡語法

前面示範的四種嵌入方法其實也非常容易了,只要整塊複製之後,在區塊編輯器的〔Shortcode〕、或者是傳統編輯器〔純文字編輯〕貼上,最後再將2AEqHyMliew修改成自己的【影片ID】就完事了!

但是當網站或者是文章中有許多影片的時候,是可以考慮將這些需要重複使用的CSS語法放到主題的CSS裡面,如此可以讓頁面中的程式碼更輕巧也更乾淨,網頁開啟的速度也會相對更快。

拆解語法中的CSS與HTML

其實前面示範的四種嵌入語法,屬於CSS合併HTML的語法。因為我們需要將嵌入媒體的樣式定義為〔響應式〕,所以需要使用CSS來定義樣式;但是又需要將語法以HTML的型態放在文章中使用,所以就需要在CSS語法的前後使用<style>包覆,便能與HTML合併使用。

就拿前面自訂的第❹種〔可循環播放+自動播放的響應式嵌入語法〕做示範:

css-htmi-iframe.YouTube響應式語法

前半段〔粉色框框內〕是CSS樣式語法,用來控制影片的樣式,目的是將嵌入的影片設定為〔響應式〕。
後半段〔綠色框框內〕是嵌入指定CSS樣式的影片語法,我們在這一段加入了〔循環播放〕以及〔自動播放〕的屬性。

因為前面示範的的4種語法,已經將CSS樣式用<style>包覆,合併到HTML語法裡面,所以可以直接在編輯文章的時候使用〔Shortcode〕或〔純文字HTML〕的方式,貼上這一整段的HTML語法。

把CSS放主題中控制全站影片樣式

上圖中前半段〔粉色框框內〕的CSS樣式語法,其實是可以放在主題的自訂CSS樣式中,如此可以一次控制全站的影片樣式,不用每一個影片不斷重複貼上同樣的CSS語法。

為不同樣式的CSS命名

css-name

因為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。

用div指定/iframe語法的樣式

css-htmi-iframe.YouTube響應式語法

在圖片中,〔綠色框框內〕的語法是嵌入指定CSS樣式為〔響應式〕的影片語法。

黃色背景〕的範圍就是嵌入YouTube影片需要的/iframe語法。

紫色背景〕的範圍是用div/iframe的樣式定義給前半段〔粉色框框內〕的〔響應式〕CSS。

圖中的CSS樣式名稱為embed-container,所以在〔HTML語法〕中,用<div class='embed-container'>以及</div>來包覆</iframe>語法,就是為了將</iframe>語法的樣式指定給〔粉色框框內〕名為embed-container的CSS樣式。

如何在主題中使用CSS語法

final-css-to-theme

將控制影片響應樣式的CSS語法放在主題的自訂CSS樣式中,如此一來,在編輯文章的頁面中,只需要放入後半段用div包覆的HTML語法就可以了。

操作時間 2 minutes

STEP 1|排列CSS語法

STEP1-css-to-theme

先將〔粉色框框內〕的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;
}

STEP 2|將CSS語法放入主題自訂CSS中

STEP2-css-to-theme

路徑為WordPress admin☞Appearance☞Customize☞Additional CSS
在空白處貼上【STEP 1】所排列成直式的CSS語法即可。

STEP 3|在文章中使用語法嵌入影片

STEP3-insert-iframe-to-shortcode

因為前半段〔粉色框框內〕的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
就介紹到這裡了!
如果有任何問題,
歡迎在下方的留言板討論指教囉~

好嘛好嘛…臨走前幫我拍拍手嘛
如果你願意免費幫助我,請在下方圓形按鈕幫我拍拍手,最多可以按5下,那就幫我按5下吧!算我求你啦啦啦~~~謝謝你、我愛你❤
臉書或Google帳號都可以快速登入喲…

facebook留言板|文章相關問題歡迎留言討論唷~
IMG_2349-miriammibao-100px

▍關於作者|MiriamMibao温唯

2019.02.11,我開始了這裡…
不懂css、不懂php,當然-也不知道誰是Nginx、誰又是Apache…
硬要WordPress架站,一切自己來,所有的細節,從0開始,自己架站會遇到的問題,遇到了才知道!這一路走來,跌跌撞撞,摸索過國內外能夠解決問題的資料…
是不是該好好紀錄這一段跌跌撞撞的探索日記?或許,也能帶給你們一些幫助...

咖啡贊助計畫

buy me a coffee-icon

我願意《將我所知道的一切,仔細地、真實地分享給你》
你願意《請我喝咖啡》嗎?
你的一杯咖啡,是我最溫暖的支持❤
用實際行動支持我創作更多好作品吧