我想要一个WordPress功能,它会从链接中获取YouTube ID并自动将其转换为自定义字段iframe
内的video_url
嵌入代码。
video_url = https://www.youtube.com/watch?v=UqV4uGLQ2L0
有时OEmbed在我的WordPress网站上不起作用,所以我正在寻找这个解决方案。
此:
https://www.youtube.com/watch?v=UqV4uGLQ2L0
应该以这种方式自动包裹:
<iframe width="560" height="315" src="https://www.youtube.com/embed/UqV4uGLQ2L0" frameborder="0" allowfullscreen></iframe>
答案 0 :(得分:0)
使用以下功能,它将返回youtube嵌入链接。
将您的youtube网址传递给函数,然后它将返回嵌入代码链接。
在functions.php中
function parseVideos($videoString = null)
{
if (strpos($videoString, 'youtube.com/embed') !== FALSE)
{
return $videoString;
}
if (strpos($videoString, 'iframe') !== FALSE)
{
// retrieve the video url
$anchorRegex = '/src="(.*)?"/isU';
$results = array();
if (preg_match($anchorRegex, $video, $results))
{
$link = trim($results[1]);
}
}
else
{
// we already have a url
$link = $videoString;
}
if (strpos($link, 'youtube.com') !== FALSE) {
preg_match(
'/[\\?\\&]v=([^\\?\\&]+)/',
$link,
$matches
);
//the ID of the YouTube URL: x6qe_kVaBpg
$id = $matches[1];
return '//www.youtube.com/embed/'.$id;
}
else if (strpos($link, 'youtu.be') !== FALSE) {
preg_match(
'/youtu.be\/([a-zA-Z0-9_]+)\??/i',
$link,
$matches
);
$id = $matches[1];
return '//www.youtube.com/embed/'.$id;
}
else if (strpos($link, 'player.vimeo.com') !== FALSE) {
// works on:
// http://player.vimeo.com/video/37985580?title=0&byline=0&portrait=0
$videoIdRegex = '/player.vimeo.com\/video\/([0-9]+)\??/i';
preg_match($videoIdRegex, $link, $matches);
$id = $matches[1];
return '//player.vimeo.com/video/'.$id;
}
else if (strpos($link, 'vimeo.com') !== FALSE) {
//extract the ID
preg_match(
'/\/\/(www\.)?vimeo.com\/(\d+)($|\/)/',
$link,
$matches
);
//the ID of the Vimeo URL: 71673549
$id = $matches[2];
return '//player.vimeo.com/video/'.$id;
}
return $videoString;
// return data
}
答案 1 :(得分:0)
第1步:检索名为video url的custom_field的值:
$unescpaed_url = get_post_meta( $post->ID, 'video_url', true );
步骤2:检索后转义网址值:
if ( $unescpaed_url) {
// Returns an empty string for invalid URLs
$url = esc_url( 'http://' . $unescpaed_url );
if ( '' !== $url ) {
$display = esc_html( $unescpaed_url );
print "<a href='$url' target='_blank'>$display</a>";
}
}