每个中继器字段(高级自定义字段)的唯一ID


Unique ID for each repeater field (advanced custom fields)

我正在创建一个有程序时间表的wordpress页面。我使用先进的自定义字段,让我们轻松地填补部分的一天和删除的东西等。然而,每个块都有自己的可折叠描述和一个href。当我创建重复器的时候它会保持可折叠部件的id不变但这行不通因为它总是打开" description 1 "

我的问题:我如何能应用一个唯一的id(即program1, program2等)到每个中继器循环。我尝试了$counter,如下面的代码所示,但我不确定如何正确地应用它。

<?php 
while ( have_rows('day_1') ) : the_row();
    $progtime             = get_sub_field('prog_time');
    $progtitle            = get_sub_field('prog_title');
    $progimage           = get_sub_field('prog_image');
    $progsubspeaker     = get_sub_field('prog_sub_speaker');
    $progsubdescription = get_sub_field('prog_sub_description');
    $progsubduration    = get_sub_field('prog_sub_duration');
    $progsublocation    = get_sub_field('prog_sub_location');
    $progsubabouttitle  = get_sub_field('prog_sub_abouttitle');
    $progsubabout       = get_sub_field('prog_sub_about');
    $progsubabouturl    = get_sub_field('prog_sub_abouturl');
    $counter = 1;
    ?>
    <!-- PROGRAM 1-->
    <div class="panel panel-default">
        <!-- Program Heading -->
        <div class="panel-heading" role="tab" id="heading1">
            <div class="row">
                <div class="col-lg-1 col-md-1 col-sm-1">
                    <p class="date"><?php echo $progtime; ?></p>
                </div>
                <div class="col-lg-11 col-md-11 col-sm-11">
                    <h4 class="panel-title">
                        <a data-toggle="collapse" data-parent="#accordion" href="#Program<?php echo $counter; ?>" aria-expanded="true" aria-controls="Program1">
                            <?php echo $progtitle; ?>
                        </a>
                    </h4>
                </div>
            </div>
        </div>
        <div id="Program<?php echo $counter; ?>" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading1">
            <!-- Program Content -->
            <div class="panel-body">
                <div class="row">
                    <div class="col-lg-2 col-md-2 col-sm-2">
                        <img class="img-responsive img-circle" src="<?php echo $progimage; ?>" alt="">
                    </div>
                    <div class="col-lg-7 col-md-7 col-sm-10">
                        <p class="speaker-name uppercase"><?php echo $progsubspeaker; ?></p>
                            <h4><?php echo $progtitle; ?></h4>
                                <p><?php echo $progsubdescription; ?></p>
                                <p><i class="fa fa-lg fa-clock-o"></i><span class="small"><?php echo $progsubduration; ?></span></p>
                                <p><i class="fa fa-lg fa-map-marker"></i> <span class="small"><?php echo $progsublocation; ?></span></p>
                            </div>
                            <div class="col-lg-3 col-md-3 col-sm-10">
                                <h5><?php echo $progsubabouttitle; ?></h5>
                                <p class="small"><?php echo $progsubabout; ?></p>
                                <span class="about-speaker"><i class="fa fa-lg fa-globe"></i> <a class="small" href="#"><?php echo  $progsubabouturl; ?></a></span>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <?php $counter++; ?>
        <?php endwhile; ?> 

你的问题是$counter在循环中被定义为1,所以每次运行它都会将它设置回等于1。

将$counter = 1移到while语句上方,这应该可以正常工作!

明白了。我在stackoverflow上使用了这个源代码作为解决方案。

我必须在循环之前定义$counter,并在循环中添加$counter++,因此每次循环都会添加+1。