2016-09-29 162 views
1

所以我在functions.php中有一個函數,我想在我的wordpress網站的其他部分用shortcode調用它,但問題是我不知道如何將函數的結果保存到一個變量。如果有人能幫助我,我將非常感激。這是php代碼:從函數返回字符串

<?php 
    function get_slider() { 
      $args = array(
      'post_type'  => 'something', 
        ); 
        $posts = get_posts($args); 
        echo $posts; 
        if($posts): ?> 
        <div class="custom-posts-grid"> 
        <?php foreach($posts as $post): setup_postdata($post); ?> 
         <?php if(have_rows('poslovna_darila')): ?> 
          <?php while(have_rows('poslovna_darila')): the_row(); ?> 
           <div class="slider_slick"> 
           <?php // vars 
           $image = get_sub_field('thumbnail_for_poslovna_darila'); 
           $link = get_sub_field('url_poslovna_darila'); 
           $count = count($posts);       
           ?>  
           <div class="slide"> 
            <a href="<?php echo $link; ?>"> 
            <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt'] ?>" class="image-overlay-post" /> 
            </a> 
           </div> 
           </div> 
          <?php endwhile; ?> 
         <?php endif; ?>       
        <?php endforeach; ?> 
        <?php wp_reset_postdata(); ?> 
        <?php endif; 
     } 

      add_shortcode ('slick_slider' , 'get_slider'); ?> 

該代碼返回數組,但我需要從中獲得一個值,或者如果可能的話滑塊。

+0

返回array = for for循環! – xYuri

回答

0

您可以使用輸出緩衝區來返回短代碼中的字符串。

<?php 
function get_slider() { 
    $args = array(
     'post_type'  => 'something', 
    ); 

    $posts = get_posts($args); 

    //echo $posts; 

    ob_start(); // start the output buffer 

    if ($posts) : ?> 

     <div class="custom-posts-grid"> 
      <?php foreach ($posts as $post) : setup_postdata($post); ?> 
       <?php if (have_rows('poslovna_darila')): ?> 
        <?php while (have_rows('poslovna_darila')) : the_row(); ?> 
         <div class="slider_slick"> 
          <?php // vars 
          $image = get_sub_field('thumbnail_for_poslovna_darila'); 
          $link = get_sub_field('url_poslovna_darila'); 
          $count = count($posts);       
          ?>  
          <div class="slide"> 
           <a href="<?php echo $link; ?>"> 
           <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt'] ?>" class="image-overlay-post" /> 
           </a> 
          </div> 
         </div> 
        <?php endwhile; ?> 
       <?php endif; ?>       
      <?php endforeach; ?> 
      <?php wp_reset_postdata(); ?> 
     </div> 

    <?php endif; 

    // return the contents of the output buffer as a string 
    return ob_get_clean();  
} 

add_shortcode('slick_slider' , 'get_slider'); ?> 
+0

謝謝你的工作,但我從整個循環中只得到一個圖像。我的意思是我獲得了11次相同的圖像,這是我擁有的帖子數量。 – Mark

+0

嘗試添加'global $ post;'到你的函數的頂部。如果這不起作用,您可能需要將$ post-> ID傳遞給have_rows() – Jrod

+0

謝謝。 – Mark