我在高级自定义字段中嵌套了转发器字段,在我的模板中,我使用if while循环来显示它们。字段是类别(帖子)>子类别>产品。在底层(产品),我触发一个模式,在该模式的标题中,我希望category_name> subcategory_name> product_name…第一个可以正常工作,因为我只是使用帖子标题(the_title),最后一个也可以工作,因为我在该级别,仅需调用the_sub_field('product_name'),但我不知道如何调用子类别名称值,我尝试过the_sub_field('subcategory_name')和the_field('subcategory_name')都返回空白。有没有办法将值从父循环传递给子循环?
是这样的:
<?php if( have_rows('category') ): while ( have_rows('category') ) : the_row(); ?>
<h3><?php the_sub_field('category_name'); ?></h3>
<?php if( have_rows('product') ): while ( have_rows('product') ) : the_row(); ?>
<a href="#<?php the_sub_field('modal_id'); ?>" data-toggle="modal" >
<?php the_sub_field('product_name'); ?>
</a>
<!-- THE MODAL -->
<div id="<?php the_sub_field('modal_id'); ?>" class="modal fade" ...>
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel">
<?php the_title(); ?>
>
<?php the_sub_field('category_name'); ?><!-- DOESN'T WORK -->
>
<?php the_sub_field('product_name'); ?>
</h4>
</div>
<div class="modal-body">
Product details here
</div>
</div>
</div>
</div>
<?php endwhile; endif; ?>
<?php endwhile; endif; ?>
答案 0 :(得分:1)
如果我正确理解,您想显示第二个循环中第一个循环中的数据。可以通过先存储数据来完成。像这样:
<?php if( have_rows('category') ): while ( have_rows('category') ) : the_row(); ?>
<h3><?php the_sub_field('category_name'); ?></h3>
<?php $category_name = get_sub_field( 'category_name' ); ?>
<?php if( have_rows('product') ): while ( have_rows('product') ) : the_row(); ?>
<a href="#<?php the_sub_field('modal_id'); ?>" data-toggle="modal" >
<?php the_sub_field('product_name'); ?>
</a>
<!-- THE MODAL -->
<div id="<?php the_sub_field('modal_id'); ?>" class="modal fade" ...>
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel">
<?php the_title(); ?>
>
<?php echo $category_name; ?><!-- NOW IT WORKS -->
>
<?php the_sub_field('product_name'); ?>
</h4>
</div>
<div class="modal-body">
Product details here
</div>
</div>
</div>
</div>
<?php endwhile; endif; ?>
<?php endwhile;
$ category_name将在每个外部循环中获得一个新值。