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

Unique ID for each repeater field (advanced custom fields)

我正在创建具有节目时间表的 wordpress 页面。我使用高级自定义字段让我们可以轻松地填写当天的部分并删除内容等。但是每个块都有自己的带有 href 的可折叠描述。但是,当我创建转发器时,它会保持该可折叠部分的 ID 不变,并且它不起作用,因为它总是会打开 'description 1'

我的问题:如何将唯一 ID(即 progam1、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; ?> 

知道了。我使用 this source on Whosebug 作为解决方案。

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

您的问题是 $counter 在循环中定义为 1,因此每次运行时都会将其设置回等于 1。

将 $counter = 1 移到 while 语句上方,这应该对您有用!