2017-09-27 83 views
0

我怎麼能在functions.php的功能add_shortcode內加入PHP代碼中的functions.php WordPress的

添加PHP代碼的功能add_shortcode內部。例如:在功能PHP

<?php $images = get_field('img_novinki'); if($images) { ?> 


<div id="carousel" class="flexslider"> 
    <ul class="slides gallery"> 
     <?php foreach($images as $image): ?> 
      <li> 
       <a href="<?php echo $image['url']; ?>"><img src="<?php echo $image['sizes']['thumbnail']; ?>" alt="<?php echo $image['alt']; ?>" /></a> 
      </li> 
     <?php endforeach; ?> 
    </ul> 
</div> <?php } ?> 

簡碼:

function my_novinki($atts) 
{ 
    return ''; 
} 
add_shortcode('my_novinki', 'my_novinki'); 
+0

我不知道我理解你的問題。函數add_shortcode用於創建簡碼,在這種情況下,它將使用[my_novinki]進行調用。然後函數中的代碼也會被命名爲my_novinki。 –

+0

你需要my_novinki函數中的所有代碼嗎? –

+0

非常感謝你的回答。我想返回'';代碼中的代碼(看例子)。 –

回答

0

從我看到你需要做以下事情。在functions.php的補充:

function my_novinki($atts) 
{ 
    $images = get_field('img_novinki'); 

    if($images) { 

    echo '<div id="carousel" class="flexslider">'; 
    echo '<ul class="slides gallery">'; 

     foreach($images as $image): 
      echo '<li>'; 
      echo '<a href="'. $image["url"] .'"><img src="'.$image["sizes"]["thumbnail"] .'" alt="'. $image["alt"] .'" /></a>'; 
      echo '</li>'; 
     endforeach; 

    echo '</ul>'; 
    echo '</div>'; 
    } 

} 

add_shortcode('my_novinki', 'my_novinki'); 

然後這可以使用[my_novinki]或者被稱爲如果在一個PHP模板使用<?php echo do_shortcode['my_novinki'];

+0

我剛剛檢查了這個代碼。問題是沒有輸出。語法中沒有錯誤,但代碼不會在頁面上打印任何內容。 –

+0

可能是我的PHP代碼是錯誤的))))我也會檢查它。 –

+0

也許問題在於$ images變量中沒有任何內容,因此if語句內的代碼不會運行 –

0

Codex:」由簡碼名爲..the功能不應該產生任何輸出類型,短代碼函數應該返回要用來代替短代碼的文本。「

你需要用在ob_start()和ob_get_clean(代碼):

add_shortcode('my_novinki', function my_novinki($atts) { 
    ob_start(); 
    $images = get_field('img_novinki'); 
    if($images) { ?> 
     <div id='carousel' class='flexslider'> 
      <ul class='slides gallery'> <?php 
       foreach($images as $image) { ?> 
        <li> 
         <a href='<?php echo $image['url']; ?>'> 
          <img src='<?php echo $image['sizes']['thumbnail']; ?>' alt='<?php echo $image['alt']; ?>' /> 
         </a> 
        </li> <?php 
       } ?> 
      </ul> 
     </div> <?php 
    } 
    $out = ob_get_clean(); 
    return $out; 
}); 
相關問題