YouTube链接指向Iframe?

时间:2016-12-08 07:32:20

标签: php wordpress youtube

我想要一个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>

2 个答案:

答案 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&amp;byline=0&amp;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>";
    }
}