2013-09-23 32 views
1

我對PHP相當陌生,但在創建網站的過去18年中,對HTML和CSS有着豐富的經驗。我的問題是我需要在wordpress中創建一個函數,它也會使用shortcode。我已經將它工作到了這樣的程度,即函數中的短代碼只顯示文本並且不執行它的功能。這是我到目前爲止有:PHP功能中的Wordpress Shortcode不起作用

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


    return'<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"> 
     '.$bio.' 
    </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;">[contact-form-7 id="4" title="Lounge Artists"]</div></div> 
     </div> 
    </div> 
</div> 

    '; 
} 
add_shortcode('artist', 'artistArea'); 

下面是我張貼在工作出色,除了視頻,音頻和畫廊的部分頁面中的簡碼。

[artist number="1" photo="http://www.classiccabaret.com.au/wp-content/uploads/2013/08/moniique-e1376982930857-150x150.jpg" name="Monique Hebrard" bio="Energetic and versatile, Monique is a multi-talented singer, saxophonist, actress, and dancer. Monique has vast experience in hotel and corporate events. Her musical repertoire covers a variety of Jazz, Latin, Pop, Blues, Funk, RnB, and African." video="http://www.youtube.com/watch?v=0cDK2HTLbYg" audio="0" gallery="7" ] 

如果任何人都可以提供幫助,這將是非常appreaciated。

+0

我建議你使用'$ content'顯示'bio':'[藝術家]傳記[/藝術家]' – brasofilo

+0

我也實施這個,因爲它整理了簡碼。謝謝。 –

回答

0

用戶需要通過do_shortcode()功能

例如運行輸出HTML:

$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"> 
     '.$bio.' 
    </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;">[contact-form-7 id="4" title="Lounge Artists"]</div></div> 
      </div> 
     </div> 
    </div> 

     '; 
return do_shortcode($output);