在嵌套循环中从父级获取价值

时间:2018-10-22 22:28:40

标签: php wordpress advanced-custom-fields

我在高级自定义字段中嵌套了转发器字段,在我的模板中,我使用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(); ?>
                    &gt;
                    <?php the_sub_field('category_name'); ?><!-- DOESN'T WORK -->
                    &gt;
                    <?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; ?>

1 个答案:

答案 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(); ?>
                    &gt;
                    <?php echo $category_name; ?><!-- NOW IT WORKS -->
                    &gt;
                    <?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将在每个外部循环中获得一个新值。