Jklyn
Jklyn

Reputation: 352

How to make direct youtube video url work not embeded?

How to make youtube video work on site without embeded code? I mean direct code as: https://www.youtube.com/watch?v=ouDmKW1FGjo. I want the user to paste direct video url into a field VIDEO_LINK not the embeded code. How can I do that? Only embeded link works on the below code not the direct link.

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

Upvotes: 1

Views: 477

Answers (2)

Pawan Thakur
Pawan Thakur

Reputation: 591

Use the following code to get video key (assuming the URL is 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>

Upvotes: 2

Samuil Banti
Samuil Banti

Reputation: 1795

You may use this function to convert Youtube URL to embeded code:

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;
}

Upvotes: 1

Related Questions