2013-09-25 67 views
0

PHP代碼工作,並顯示聯繫人的形式和畫廊,然而,YouTube視頻鏈接不embeding就像他們在正常的WordPress的頁面。它只是在彈出窗口中顯示地址。這在使用頁面上的html代碼時起作用,但在PHP函數中不起作用。如果任何人都可以提供幫助,這裏是代碼。謝謝。PHP函數不顯示內嵌YouTube影片

function artistArea($atts, $content = null) { 
    extract(shortcode_atts(array('number' => '#', 'photo' => '#', 'name' => '#', 'video' => '#', 'audio' => '#', 'gallery' => '#', 'bio' => '#', 'element1' => '#','element2' => '#','element3' => '#','element4' => '#'), $atts)); 

    switch ($number) { 
     case '1' : 
      $element1 = '1'; 
      $element2 = '2'; 
      $element3 = '3'; 
      $element4 = '4'; 
      break; 
     case '2' : 
      $element1 = '5'; 
      $element2 = '6'; 
      $element3 = '7'; 
      $element4 = '8'; 
      break; 
     case '3' : 
      $element1 = '9'; 
      $element2 = '10'; 
      $element3 = '11'; 
      $element4 = '12'; 
      break; 
     case '4' : 
      $element1 = '13'; 
      $element2 = '14'; 
      $element3 = '15'; 
      $element4 = '16'; 
      break; 
     case '5' : 
      $element1 = '17'; 
      $element2 = '18'; 
      $element3 = '19'; 
      $element4 = '20'; 
      break; 
     default : 
      $element1 = '1'; 
      $element2 = '2'; 
      $element3 = '3'; 
      $element4 = '2'; 
      break; 
     break; 
    } 

     switch ($type) { 
     case 'lounge' : 
      $formType = '[contact-form-7 id="4" title="Lounge Artists"]'; 
      break; 
     case 'magic' : 
      $formType = '[contact-form-7 id="184" title="Magic Artists"]'; 
      break; 
     case 'tribute' : 
      $formType = '[contact-form-7 id="185" title="Tribute Artists"]'; 
      break; 
     case 'comedy' : 
      $formType = '[contact-form-7 id="186" title="Comedy Artists"]'; 
      break; 
     case 'dance' : 
      $formType = '[contact-form-7 id="187" title="Dance Artists"]'; 
      break; 
     case 'hen' : 
      $formType = '[contact-form-7 id="188" title="Hens Party Artists"]'; 
      break; 
     case 'hypnotist' : 
      $formType = '[contact-form-7 id="189" title="Hypnotist Artists"]'; 
      break; 
     case 'circus' : 
      $formType = '[contact-form-7 id="190" title="Circus Artists"]'; 
      break; 
     default : 
      $formType = '[contact-form-7 id="4" title="Lounge Artists"]'; 
      break; 
     break; 
    } 

     switch ($audio) { 
     case '0' : 
      $audioSection = ''; break; 
     default : 
      $audioSection = ' 
     <div class="artists_audio"> 
      <a class="lbp-inline-link-'.$element2.' cboxElement" href="#">AUDIO</a> 
      <div style="display: none;"><div id="lbp-inline-href-'.$element2.'" style="padding:10px; background: #fff;">[soundcloud url="'.$audio.'" params="" width=" 100%" height="166" iframe="true" /]</div></div> 
     </div>'; break; 
     break; 
    } 

     switch ($video) { 
     case '0' : 
      $videoSection = ''; break; 
     default : 
      $videoSection = '  <div class="artists_video"> 
      <a class="lbp-inline-link-'.$element1.' cboxElement" href="#">VIDEO</a> 
      <div style="display: none;"><div id="lbp-inline-href-'.$element1.'" style="padding:10px; background: #fff;"> 
      '.$video.' 
      </div></div> 
     </div>'; break; 
     break; 
    } 

     switch ($gallery) { 
     case '0' : 
      $gallerySection = ''; break; 
     default : 
      $gallerySection = '     <div class="artists_pictures"> 
      <a class="lbp-inline-link-'.$element3.' cboxElement" href="#">PICTURES</a> 
      <div style="display: none;"><div id="lbp-inline-href-'.$element3.'" style="padding:10px; background: #fff;">[nggallery id='.$gallery.']</div></div> 
     </div>'; break; 
     break; 
    } 


    $output = '<div class="artist_enclosure"> 
    <div class="artists_photo"> 
     <img src="'.$photo.'" alt="'.$name.'" width="150" height="150" class="alignnone size-thumbnail wp-image-39" /> 
    </div> 
    <div class="artists_name"> 
     '.$name.' 
    </div> 
    <div class="artists_bio"> 
     '.$content.' 
    </div> 

    <div class="artists_media"> 

     '.$videoSection.' 

     '.$audioSection.' 

     '.$gallerySection.' 

     <div class="artists_booknow"> 
      <a class="lbp-inline-link-'.$element4.' cboxElement" href="#">BOOK NOW!</a> 
      <div style="display: none;"><div id="lbp-inline-href-'.$element4.'" style="padding:10px; background: #fff;">'.$formType.'</div></div> 
     </div> 
    </div> 
</div> 

     '; 
return do_shortcode($output); 
} 
add_shortcode('artist', 'artistArea'); 
+0

我不認爲我看到這個片段和YouTube之間的關係。 – Brian

回答

0

do_shortcode不尋找oEmbeds。您必須直接調用oEmbed代碼,但在oEmbed代碼查看您的內容之前需要先完成一些設置。

取而代之的是...

return do_shortcode($output); 

...你需要做這樣的事情:

// Use the WP_Embed instance WordPress already set up 
global $wp_embed; 

/** 
* Replace the global $post with a fake ID (a really crazy one!) 
* or else WP_Embed::autoembed() will skip the oEmbed check 
* for some reason. 
**/ 
global $post; 
$oldpost = $post; 
$post = new stdClass(); 
$post->ID = PHP_INT_MAX; 

// Process oEmbeds 
$output = $wp_embed->autoembed(do_shortcode($output)); 

// Restore the original $post 
$post = $oldpost; 

return $output;