ACF 转发器字段仅显示一行



我在下面的一些代码中遇到了问题我使用wordpress和插件ACF PRO。我查询了一些帖子,在这个帖子中有一个中继器字段,但它似乎只显示中继器字段"evenement"的第一行。不知道是不是很清楚?

有人可以帮助我。

谢谢

<?php $query = new WP_Query(
array( 
'category__not_in' => array(520),
'category__and' => array(2905,1582),
'post_status' => array( 'draft'),
'post_type' => 'spectacles',
'lang' => 'fr',
'showposts' => -1,
'meta_key' => 'date_debut',
'orderby' => 'meta_value_num',
'order' => 'ASC')
);?> 
<?php if($query->have_posts()) : while ($query->have_posts() ) : $query->the_post();?>
<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>">
    <div id="bloc-picto">
        <div class="item-picto">
            <img src="<?php $picto = get_field('picto');if( !empty($picto) ): ?><?php echo $picto['url']; ?><?php else: ?><?php $image_id = get_post_thumbnail_id(); $image_url = wp_get_attachment_image_src($image_id,'icon', true); echo $image_url[0];  ?><?php endif; ?>" width="40px" height="40px">
        </div>
        <div class="legend-picto">
        <b><?php the_title(); ?></b>
            <?php if( get_field('compagnie') ): ?>
            <?php the_field('compagnie'); ?>
            <?php endif; ?>
        <br/>
            <?php if( get_field('acces_star') ): ?>
            <div style="font-size:10px"><?php the_field('acces_star'); ?></div>
            <?php endif; ?>
            <?php if( have_rows('evenement') ): while ( have_rows('evenement') ) : the_row(); ?>
            <?php $post_object = get_sub_field('lieu_evenement');if( $post_object ):
            $post = $post_object; setup_postdata( $post ); ?>
                <i><?php the_title(); ?></i>
            <?php wp_reset_postdata();  ?>
            <?php endif; ?>
            <?php endwhile; ?>
            <?php endif; ?>
        </div>
    </div>
</a>
<?php wp_reset_postdata(); ?>
<?php endwhile; else: ?>
<?php endif; ?>

我遇到了类似的问题,当基本上将一个查询嵌套在另一个查询中时,have_rows(( 循环只返回第一个布局。

我的解决方案是在每次布局后重新定义$post变量。例如:

$post = 123;
setup_postdata( $post );
if ( have_rows( 'components' ) ) {
   while ( have_rows( 'components' ) ) {
      the_row();
      $course_tmpl_name = str_replace( '_', '-', get_row_layout() );
      // include your layout php here
      $post = 123; // redefine $post
   }
}   
wp_reset_postdata(); 

最新更新