ACF бутстрап последний всегда открытый - PullRequest
0 голосов
/ 10 декабря 2018

Я использую Advanced Custom Fields (ACF) вместе с Bootstrap 4. Аккордеон находится в полях повторителя.Я хочу иметь аккордеон с последним открытым предметом.Я знаю, как это сделать, когда первый элемент всегда открыт.Смотрите код ниже.Поскольку я не знаю, сколько предметов будет (потому что они могут отличаться для каждого CPT), я не могу использовать $ i == 1 или $ i == 2 и т. Д.

Пожалуйста,см. код ниже, чтобы первый элемент всегда был открыт, но необходимо, чтобы последний элемент всегда был открыт.

<?php if( have_rows('faq') ): ?>
<div id="accordion" role="tablist">
  <?php $i=1; while ( have_rows('faq') ) : the_row(); ?>
    <div class="card">
        <div class="card-header" role="tab" id="heading-<?php echo $i; ?>">
          <h5 class="mb-0">
            <a data-toggle="collapse" href="#collapse-<?php echo $i; ?>" aria-expanded="true" aria-controls="collapseOne">
             <?php the_sub_field('vraag'); ?>
            </a>
          </h5>
        </div>
        <div id="collapse-<?php echo $i; ?>" class="collapse <?php if ($i==1) { echo 'show'; } ?>" role="tabpanel" data-parent="#accordion" aria-labelledby="heading-<?php echo $i; ?>">
          <div class="card-body">
            <?php the_sub_field('antwoord'); ?>
          </div>
        </div>
    </div>
  <?php $i++; endwhile; ?>
</div>

Надеюсь, что кто-то указывает m, e в правильном направлении, как это сделать.

Спасибо заранее.

1 Ответ

0 голосов
/ 10 декабря 2018

Вы можете попробовать выполнить цикл ACF и присвоить все значения массиву php.Затем вы можете посчитать массив, чтобы у вас был индекс последнего элемента.И вы также можете использовать этот массив для генерации вашего аккордеона (чтобы вы не запускали запрос дважды).

Вы также можете использовать счетчик для ACF (но я не пробовал, так что я не совсемобязательно): $count = count(get_field('faq'));

# here is an example of your code with count.

<?php if( have_rows('faq') ): ?>
<?php $count = count(get_field('faq'));  ?>
<div id="accordion" role="tablist">
  <?php $i=1; while ( have_rows('faq') ) : the_row(); ?>
    <div class="card">
        <div class="card-header" role="tab" id="heading-<?php echo $i; ?>">
          <h5 class="mb-0">
            <a data-toggle="collapse" href="#collapse-<?php echo $i; ?>" aria-expanded="true" aria-controls="collapseOne">
             <?php the_sub_field('vraag'); ?>
            </a>
          </h5>
        </div>
        <div id="collapse-<?php echo $i; ?>" class="collapse <?php if ($i == $count) { echo 'show'; } ?>" role="tabpanel" data-parent="#accordion" aria-labelledby="heading-<?php echo $i; ?>">
          <div class="card-body">
            <?php the_sub_field('antwoord'); ?>
          </div>
        </div>
    </div>
  <?php $i++; endwhile; ?>
</div>
...