2013-09-25 4 views
0

PHP-код работает и отображает формы контактов и галереи, однако ссылки на YouTube не встраиваются, как на обычной странице Wordpress. Он просто отображает адрес во всплывающем окне. Это работало при использовании html-кода на странице, но не работает один раз внутри функции PHP. Вот код, если кто-то может помочь с этим. Благодарю.PHP Функция в Wordpress, не отображающая встроенное видео 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; 
Смежные вопросы