首页 > 解决方案 > ACF:仅获取中继器字段的第一行

问题描述

我有一个名为“images”的转发器文件,在其中我有一个名为“image”的子文件。

我怎样才能只获得第一行的值?

这是我的代码

<?php if( have_rows('images') ): ?>
<?php
$active = 'active';
while ( have_rows('images') ) : the_row();
$image = get_sub_field('image');
if($image == "" ) continue;
?>
<img src="<?php echo get_template_directory_uri(); ?>/files/images/<?php the_sub_field('image'); ?>" class="img-fluid is-slider-item" />
<?php $active = '';
endwhile;
?>
<?php endif; ?>

我试过的

<?php if( have_rows('images') ): ?>
<?php
 $active = 'active';
 while ( have_rows('images') ) : the_row();
 $image = get_sub_field('image');
 if($image == "" ) continue;
 ?>
 <img src="<?php echo get_template_directory_uri(); ?>/files/images/<?php the_sub_field('image'); ?>" class="img-fluid is-slider-item" />
<?php break;
 <?php $active = '';
 endwhile;
    ?>
    <?php endif; ?>

提前谢谢了!

标签: phpwordpressfrontendadvanced-custom-fields

解决方案


你可以试试下面的代码

<?php if( have_rows('images') ): ?>
    <?php
            $active = 'active';

            while ( have_rows('images') ) : the_row();
            
                    $image = get_sub_field('image');
                    
                    if ($image !== '') {
    ?>
                                 <img src="<?php echo esc_url(get_template_directory_uri(). '/files/images/'. $image); ?>" class="img-fluid is-slider-item" />
                                <?php $active = ''; ?>
    <?php        
                    }
                    
                    break;

            endwhile;
    ?>
<?php endif; ?>

“虽然”至少执行了 1 次,因此您可以将“中断”放在最后。

还需要使用函数esc_url进行转义 url


推荐阅读