Wordpress ACF 中继器字段 - 仅拉入前 2 个字段

Posted

技术标签:

【中文标题】Wordpress ACF 中继器字段 - 仅拉入前 2 个字段【英文标题】:Wordpress ACF Repeater Field - Only pull in first 2 fields 【发布时间】:2017-03-17 16:16:07 【问题描述】:

主题有点说明一切。我只需要拉入 ACF 转发器字段的前两个字段。

这是我正在尝试使用的,但显然不正确:

<?php $args = [ 'posts_per_page' => 2, 'order' => 'desc']; ?>
<?php $ar = new WP_Query( $args ); ?>

<?php if( $ar->have_rows('prodImgs') ): while ( $ar->have_rows('prodImgs') ) : $ar->the_row(); ?>

    <img src="<?php the_sub_field('prodImg'); ?>" >

<?php endwhile; ?>
<?php endif; ?>

我该怎么做?

【问题讨论】:

您要显示哪些字段?当您说您只想要前 2 个字段时,这是否意味着转发器的前两行? 【参考方案1】:
<?php
// check if the repeater has data
if( have_rows('prodImgs') ) 
  //counter
  $i=0;
  //loop through the rows
  while( have_rows('prodImgs') ) 
  the_row();
  //check if 2 subfields have been shown
  if ( $i > 1 )  break; 
  echo "<img src='" . get_sub_field('prodImg_sub') . "' alt='Lorem ipsum'>";
  $i++;
  

?>

您正在混合苹果和梨、WP_Query 和 ACF 中继器字段。 WP_Query 返回帖子数据,而 ACF 函数 have_rows( $repeater_field_name, $post_id ); 检查您的页面/帖子上的自定义字段转发器中是否有任何数据(或者您是否在相关帖子/页面上指定了 $post_id)。更多信息https://www.advancedcustomfields.com/resources/repeater/

【讨论】:

【参考方案2】:

<?php $rows = get_field('prodImgs'); ?>

<?php $i = 0; if ($rows):?>

    <?php foreach($rows as $row): ?>

        <img src="<?php echo $rows[$i][/* name of first field */]; ?>" >
        <?php echo $rows[$i][/* name of Second field */]; ?>

    <?php $i++; endforeach; ?>

<?php endif; ?>

【讨论】:

以上是关于Wordpress ACF 中继器字段 - 仅拉入前 2 个字段的主要内容,如果未能解决你的问题,请参考以下文章

ACF 中继器子字段 Shuffle(wordpress 高级自定义字段)

php 用于跟踪代码的ACF自定义字段中继器(Wordpress)

搜索页面上的 Wordpress ACF 中继器字段

WordPress ACF:为自定义帖子类型添加默认行到管理部分的中继器字段类型

以编程方式更新转发器字段中特定组字段的值 - 高级自定义字段 (ACF) - Wordpress

ACF 中继器字段仅显示一行