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 并循环遍历它们...在每个循环中,转发器字段都被输出....
因此,当我尝试使用 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 并循环遍历它们...在每个循环中,转发器字段都被输出....