2016-09-27 46 views
0

因此,當我嘗試使用ACF中繼器字段而不是向我顯示所有字段時,我只獲得第一個字段。代碼如下。ACF中繼器只顯示1行

<?php if(have_rows('vsi_projekti')): ?> 
    <ul class="posts-grid">     
     <?php while(have_rows('vsi_projekti')): the_row(); 
      // vars 
      $image = get_sub_field('vsi_projekti_image'); 
      $content = get_sub_field('project_name'); 
      $link = get_sub_field('link_to_post'); 
      ?> 
      <li class="post-grid"> 
       <a href="<?php echo $link; ?>"> 
        <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt'] ?>" /> 
        <div class="post-title-hover"><?php echo $content; ?></div> 
       </a> 
      </li> 
     <?php endwhile; ?> 
    </ul> 
<?php endif; ?> 

任何關於我在做什麼的錯誤是出錯只是1行而不是多個? 我不知道這是否與我的問題有關,但我在每篇文章中只添加了1行。但最終我應該走出更多,然後是我想的那一排?

+0

你有沒有嘗試用一些調試代碼像'var_dump(have_rows('vsi_projekti'))'?也許'have_rows()'只返回一個結果。 – Kovah

+0

如果我嘗試使用var_dump,那麼就可以使用bool(true)。 – Mark

+0

如果我嘗試使用var_dump,那麼就可以使用bool(true)。它應該是,如果我做var_dump('vsi_projekti')我得到字符串(12)應該是正確的,我有12個元素在這個ACF atm。 – Mark

回答

1

我認爲你很困惑什麼是ACF中繼器領域。如果您在每個帖子中只用一箇中繼器輸入一行,通常只會得到一行......因爲您的代碼工作得很好......對於帖子中的中繼器......當您在帖子中添加15行時你會得到所有的15行作爲輸出...

但是,如果你想輸出每個帖子的每個中繼器的每一行,yopur代碼不起作用。而應該試試這個:

<?php 

    $args = array(
    'post_type' => 'post', 
    'posts_per_page' => -1 
); 

    $posts = get_posts($args); 

    if($posts): ?> 
    <ul class="posts-grid"> 
    <?php foreach($posts as $post): setup_postdata($post); ?> 

     <?php if(have_rows('vsi_projekti')): ?> 

      <?php while(have_rows('vsi_projekti')): the_row(); 
       // vars 
       $image = get_sub_field('vsi_projekti_image'); 
       $content = get_sub_field('project_name'); 
       $link = get_sub_field('link_to_post'); 
       ?> 
       <li class="post-grid"> 
        <a href="<?php echo $link; ?>"> 
         <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt'] ?>" /> 
         <div class="post-title-hover"><?php echo $content; ?></div> 
        </a> 
       </li> 
      <?php endwhile; ?> 

     <?php endif; ?> 

    <?php endforeach; //foreach($posts as $post) ?> 
    <?php wp_reset_postdata(); ?> 
    </ul> 
    <?php endif; // if($posts) ?> 

這段代碼獲得的所有帖子,並循環通過量他們......在每一個循環的中繼場放出來....

+0

謝謝,解決了這個問題。 – Mark