2017-08-02 116 views
0

如何使YouTube视频在现场工作,无需嵌入代码?我的意思是直接代码为:https://www.youtube.com/watch?v=ouDmKW1FGjo。我希望用户将直接视频网址粘贴到VIDEO_LINK字段而不是嵌入代码。我怎样才能做到这一点?只有嵌入式链接适用于下面的代码而不是直接链接。如何使直接的YouTube视频网址工作不嵌入?

<iframe width="100%" height="550" src="<?php the_field('video_link') ?>" frameborder="0" allowfullscreen></iframe> 
+0

有有很多方法可以做到这一点。我会请你仔细阅读:https://codex.wordpress.org/Embeds。 –

回答

1

使用下面的代码来获取视频密钥(假设URL是https://www.youtube.com/watch?v=ouDmKW1FGjo):

<?php 
    $video_url=get_field('video_link'); 

    $url = urldecode(rawurldecode($video_url)); 
    preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $url, $matches); 

     // Get key of youtube by preg_match and put it in iframe 

     $videoKey= $matches[1]; 
?> 
<iframe width="100%" height="550" src="https://www.youtube.com/embed/<?php echo $videoKey ;?>" frameborder="0" allowfullscreen></iframe> 
1

您可以使用此功能,Youtube的URL转换为嵌入式代码:

function get_youtube_embed($youtube_url, $width=560, $height=315) 
{ 
    $height = (int)$height; 
    $width = (int)$width; 
    $embed_html = ''; 
      $parts = parse_url($youtube_url); 
      if(isset($parts['query'])) { 
        parse_str($parts['query'], $query); 
        if(isset($query['v'])) { 
          $embed_html = '<iframe width="'.$width.'" height="'.$height.'" src="https://www.youtube.com/embed/'.$query['v'].'" frameborder="0" allowfullscreen></iframe>'; 
        } 
      } 
      return $embed_html; 
}