我已经找到了正常 YouTube URL 的 YouTube ID。但是我没有考虑过短的 youtu.be 网址,也没有想到过滤掉 YouTube-Id 视频。据我所知,有这些类型的 YT-URL 可用:
youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index
youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o
youtube.com/v/0zM3nApSvMg?fs=1&hl=en_US&rel=0
youtube.com/watch?v=0zM3nApSvMg#t=0m10s
youtube.com/embed/0zM3nApSvMg?rel=0
youtube.com/watch?v=0zM3nApSvMg
youtu.be/0zM3nApSvMg
我在另一个问题中发现了这一点,但它不起作用:
/^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/
所以我的问题是:我如何编辑以下代码才能始终获取 YouTube-ID?!;)
太感谢了!
add_filter('embed_oembed_html', 'my_embed_oembed_html', 99, 4);
function my_embed_oembed_html( $html, $url, $attr, $post_id) {
$posttext = substr($url[0],1);
preg_match('/v\=([a-zA-Z0-9,-]+)/', $url, $youtubeID);
return '<div id="video" class="border-frame"><video class="video" data-settings="autoresize:fit" preload="none" data-youtube-id="' . $youtubeID[1] . '"></video></div>';
}