2016-10-04 6 views
0

詳細を説明するために、私は11の投稿を持ち、それぞれの投稿には事前のカスタムフィールドフォームに画像を入力します。しかし、私はそれらを呼び出すと、私は11の結果を返しますが、ただ1つの投稿からです。アドバンスカスタムフィールドは同じ値を返し続けます

ここで私が取り組んでいることは次のとおりです。 functiuons.phpにありますので、これを短いコードとして取得したいので、私は複数のポストタイプで使用できます。

  function get_slider() { 
      $args = array(
      'post_type' => 'projekti', 
      'posts_per_page' => -1, 
        ); 
        $posts = get_posts($args); 

        ob_start(); 

        if($posts): ?> 
        <div class="slider_slick"> 
        <?php foreach($posts as $post): setup_postdata($post); ?> 
         <?php if(have_rows('slider')): ?> 
          <?php while(have_rows('slider')): the_row(); ?> 
           <?php // vars 
           $image = get_sub_field('image_slider'); 
           $link = get_sub_field('slider_link');      
           ?>  
           <div class="slide"> 
            <a href="<?php echo $link; ?>"> 
            <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt'] ?>" /> 
            </a> 
           </div> 

          <?php endwhile; ?> 
         <?php endif; ?>       
        <?php endforeach; ?> 
        <?php wp_reset_postdata(); ?> 
        </div> 
        <?php endif; 
        return ob_get_clean(); 
     } 
    add_shortcode ('slick_slider' , 'get_slider'); 

私が作成したテンプレートにはほとんど同じコードがありますが、それはうまく動作しますが、これはありません。理由はわかりません。

+0

代わりに 'get_posts'を使って' WP_QUERY'を試してみてください。 – Noman

+0

試してみましたが、うまくいきませんでした。提案していただきありがとうございます。 – Mark

+0

あなたは 'スライダー'の行を持っていますか? 'setup_postdata($ post);'の行の後に 'get_fields(get_the_ID());'の出力を追加してください。 – Noman

答えて

0

私はそれを動作させるために私の関数の先頭に

global $post; 

を追加する必要がありました。とにかく助けてくれてありがとう。

0

acf have_rows()機能の現在の投稿のIDを渡します。私は$currentId = get_the_ID();を使ってそれを行い、必要なところで変数$ currentIdを使っています。

 function get_slider() { 
     $args = array(
     'post_type' => 'projekti', 
     'posts_per_page' => -1, 
       ); 
       $posts = get_posts($args); 

       ob_start(); 

       if($posts): ?> 
       <div class="slider_slick"> 
       <?php foreach($posts as $post): setup_postdata($post); 
       $currentId = get_the_ID(); 
        ?> 
        <?php if(have_rows('slider', $currentId)): ?> 
         <?php while(have_rows('slider', $currentId)): the_row(); ?> 
          <?php // vars 
          $image = get_sub_field('image_slider'); 
          $link = get_sub_field('slider_link');      
          ?>  
          <div class="slide"> 
           <a href="<?php echo $link; ?>"> 
           <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt'] ?>" /> 
           </a> 
          </div> 

         <?php endwhile; ?> 
        <?php endif; ?>       
       <?php endforeach; ?> 
       <?php wp_reset_postdata(); ?> 
       </div> 
       <?php endif; 
       return ob_get_clean(); 
    } 
add_shortcode ('slick_slider' , 'get_slider'); 
+0

アイディアをありがとうございます。 – Mark

関連する問題