問題描述
我正在執行一個僅透過 SSL /HTTPS 進行通訊的網站,所以如果我使用 http 嵌入 YouTube 影片,我將收到一條錯誤訊息,表示該網站不完全安全。是否可以重寫某些內容,以便 WordPress 接受 https 並仍然自動嵌入新增到內容區域的 YouTube 連結?因為現在,當我嘗試嵌入一個 https youtube 連結,所有顯示的是 URL,沒有電影。
更新
我試圖在 functions.php 中新增使用這個程式碼的提供者,但它什麼都不做:
wp_oembed_add_provider('https://youtu.be/*', 'https://youtube.com/oembed' );
wp_oembed_add_provider('#https://(www.)?youtube.com/watch.*#i', 'https://youtube.com/oembed', true);
wp_oembed_add_provider('http://youtu.be/*', 'https://youtube.com/oembed' );
wp_oembed_add_provider('#http://(www.)?youtube.com/watch.*#i', 'https://youtube.com/oembed', true);
最佳解決方案
http://core.trac.wordpress.org/ticket/18719 現在有一個工作補丁。
編輯:外掛程式碼做相似,直到補丁進入:
wp_oembed_add_provider('#https://(www.)?youtube.com/watch.*#i', 'http://youtube.com/oembed?scheme=https', true);
wp_oembed_add_provider('https://youtu.be/*', 'http://youtube.com/oembed?scheme=https', false );
次佳解決方案
Otto 的解決方案在 WP 3.6 中不起作用,大概是因為核心已經改變了核心,現在匹配 https://,所以增加的提供商永遠不會匹配。雖然 https://在核心中匹配,但它始終提供一個 http://embed,即使原始 URL 是 https://,所以我們在這裡仍然有同樣的問題。
我已經決定把所有的裝配轉換成 protocol-relative:
function my_embed_oembed_html( $html ) {
return preg_replace( '@src="https?:@', 'src="', $html );
}
add_filter( 'embed_oembed_html', 'my_embed_oembed_html' );
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。