ACF 中继器仅显示 1 行

ACF repeater showing just 1 row

因此,当我尝试使用 ACF 转发器字段而不是向我显示所有字段时,我只得到第一个。代码如下

<?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 行而不是多行,有什么建议吗? 我不知道这是否与我的问题有关,但我在每个 post 中只添加了 1 行。但最后我应该出去更多,而不是我想的那样?

我认为您对 ACF 中继器字段的作用感到困惑。如果您在每个 post witrh 中继器中只输入一行,那么您只得到一行是正常的......因为您的代码工作得很好......对于 post 内的中继器......当您在 post 中添加 15 行时,您将获得所有 15 行作为输出...

但是如果你想输出每一个post的每个中继器的每一行,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 )  ?>

此代码获取所有 post 并循环遍历它们...在每个循环中,转发器字段都被输出....