2016-09-27 49 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