2017-03-08 4 views
0

Ich verwende ein Theme namens gridby für WordPress, das ein eigenes Plugin verwendet, um das vorgestellte Bild zu einem iframe von vimeo oder youtube zu ändern, wenn das Feld fb_video einen Link im Posteditor enthält und zeigt das Videobild auf der Blog-Feed-Seite und den iFrame im Post anstelle des vorgestellten Bildes an. Ich habe es bisher nur für einen Vimeo-Link benutzt, der gut funktioniert und heute einfach versucht hat, einen Youtube-Video-Link mit/embed am Ende und ohne Fehler einzubauen. Es ist nicht mein Code, also will ich es nicht weiter bremsen, wenn jemand mir helfen kann großartig zu sein, da ich diese Funktionalität brauche. Ich habe den iframe in einen leeren Post im Editor eingefügt und das zeigt gut an, dass es nicht durch den PHP-Code angezeigt wird.Youtube einbetten und PHP iframe anzeigen, aber mit Anzeigefehler

/* ------------------------------------------------------------------------- * 
* Video Functions 
/* ------------------------------------------------------------------------- */ 

/* display url image big youtube and vimeo 
/* ------------------------------------ */ 

if (!function_exists('video_image')) { 

    function video_image($url, $size){ 

     $image_url = parse_url($url); 

     if($size == 'small') { 

      if($image_url['host'] == 'www.youtube.com' || $image_url['host'] == 'youtube.com'){ 
       $array = explode("&", $image_url['query']); 
       return "http://img.youtube.com/vi/".substr($array[0], 2)."/1.jpg"; 

      } else if($image_url['host'] == 'www.vimeo.com' || $image_url['host'] == 'vimeo.com'){ 
       $hash = unserialize(file_get_contents("http://vimeo.com/api/v2/video/".substr($image_url['path'], 1).".php")); 
       return $hash[0]["thumbnail_small"]; 
      } 

     } else if($size == 'hd') { 

      if($image_url['host'] == 'www.youtube.com' || $image_url['host'] == 'youtube.com'){ 
       $array = explode("&", $image_url['query']); 
       return "http://img.youtube.com/vi/".substr($array[0], 2)."/hqdefault.jpg"; 

      } else if($image_url['host'] == 'www.vimeo.com' || $image_url['host'] == 'vimeo.com'){ 
       $hash = unserialize(file_get_contents("http://vimeo.com/api/v2/video/".substr($image_url['path'], 1).".php")); 
       return $hash[0]["thumbnail_large"]; 
      } 
     } 

    } 

} 

/* display iframe of youtube and vimeo 
/* ------------------------------------ */ 

if (!function_exists('video_player')) { 

    function video_player($url, $autoplay){ 

     $image_url = parse_url($url); 

     if($autoplay == '1') { 

      if($image_url['host'] == 'www.youtube.com' || $image_url['host'] == 'youtube.com'){ 
       $array = explode("&", $image_url['query']); 
       return "<iframe title='YouTube video player' width='400' height='275' src='http://www.youtube.com/embed/".substr($array[0], 2)."?wmode=trasparent&autoplay=1' frameborder='0' wmode='opaque' allowfullscreen></iframe>"; 

      } else if($image_url['host'] == 'www.vimeo.com' || $image_url['host'] == 'vimeo.com'){ 

       return "<iframe src='http://player.vimeo.com/video/".substr($image_url['path'], 1)."?autoplay=true' width='400' height='275' frameborder='0' allowfullscreen'></iframe>"; 
      } 

     } else { 

      if($image_url['host'] == 'www.youtube.com' || $image_url['host'] == 'youtube.com'){ 
       $array = explode("&", $image_url['query']); 
       return "<iframe title='YouTube video player' width='400' height='275' src='http://www.youtube.com/embed/".substr($array[0], 2)."?wmode=trasparent' frameborder='0' wmode='opaque' allowfullscreen></iframe>"; 

      } else if($image_url['host'] == 'www.vimeo.com' || $image_url['host'] == 'vimeo.com'){ 

       return "<iframe src='http://player.vimeo.com/video/".substr($image_url['path'], 1)."' width='400' height='275' frameborder='0' allowfullscreen'></iframe>"; 
      } 

     } 

    } 

} 


/* ------------------------------------------------------------------------- * 
* Filter Thumbnail 
/* ------------------------------------------------------------------------- */ 

add_filter('post_thumbnail_html', 'post_thumbnail_html', 10, 3); 

    function post_thumbnail_html($html, $post_id, $post_image_id) { 

     $video = get_post_meta($post_id, 'fb_video', true); 

     if ($html) { /* If have thumbnail image set */ 

      if ($video != '') { 

       if (is_single()){ /* Show playe on single page */ 

        if(function_exists('video_player')) { 

        ?> 

         <div class='video-container'><?php echo video_player($video, 0); ?></div> 

        <?php 

        } 

       } else { 

        echo '<i class="fa fa-play-circle fa-4x"></i>'. $html; 

       } 

      } else { 

       echo $html; 

      } 

     } else { /* If haven't thumbnail image set */ 

      if ($video != '') { 

       if (is_single()){ /* Show playe on single page */ 

        if(function_exists('video_player')) { 

        ?> 

         <div class='video-container'><?php echo video_player($video, 0); ?></div> 

        <?php 

        } 

       } else { 

        echo '<i class="fa fa-play-circle fa-4x"></i><img class="img-res" src="'. video_image($video, 'hd').'" alt="' . esc_attr(get_post_field('post_title', $post_id)) . '" />'; 

       } 

      } 

     } 

    } 



?> 

Antwort

0

musste die/watch? V = Version der URL verwenden, damit sie angezeigt wird. Frage ich habe aber in Bezug auf diese wäre es nicht einfacher, nur Benutzer zu bitten, die ID für youtube in ein kundenspezifisches Feld einzugeben? Auf diese Weise könnten Sie einfach den iFrame in die Seitenvorlage einfügen und die get metafunktion verwenden, um sie nach dem/einzufügen.

Das ist, wie ich das Video selbst eingeben würde, aber wie würde ich gehen, um das Bild des Videos so für die Blog-Seite Beiträge zu bekommen? sehen Sie nicht die Notwendigkeit für ein Plugin wirklich möchte ich diese Funktion nutzen, in meinem eigenen Thema so Suche eine sauberere Alternative

0

https://wordpress.org/plugins/optimise-youtube-video-embed/

Dieses Plugin kann Ihnen helfen, das iframe Problem zu lösen. Dies erhöht die Seitenbelastung dynamisch. Sobald Sie auf Ihre Schaltfläche klicken, wird nur Ihr Video eingebettet.

Fügen Sie den Shortcode in Ihre Seite oder Ihren Beitrag ein. Sie können Ihr benutzerdefiniertes Bild als Videobanner hinzufügen.

[eh_optimize_youtube_embed video="youtube_link" banner="banner_image_link_optional"] 
Verwandte Themen