Отображение переменной цикла while перед выполнением цикла

#wordpress #while-loop #advanced-custom-fields

#wordpress #while-цикл #дополнительно-пользовательские поля

Вопрос:

Итак, я использую повторитель ACF для заполнения содержимого. Я хотел бы отобразить общее количество элементов в верхней части блока еще до выполнения цикла while. Я могу отобразить $counter в нижней части блока, и это здорово. Но, очевидно, что перед запуском что-либо выполняется, оно равно null или 0 по понятным причинам. Я просто не уверен, как показать $counter вне цикла еще до запуска цикла.

                 <div class="col-sm-12 text-left">
                    <p><strong>Total Videos:</strong>
                        <?php var_dump($counter); ?>
                    </p>
                </div>

                <?php if ( have_rows( 'choir_videos' ) ) :
                    $counter = 0;
                    while ( have_rows( 'choir_videos' ) ) : the_row(); 
                    $counter  ;
                ?>

                ```
                html block
                ```

                <?php 
                endwhile; endif; 
                ?>

                <div class="col-sm-12 text-left">
                    <p><strong>Total Videos:</strong>
                        <?php echo $counter ?>
                    </p>
                </div>
  

В настоящее время $counter работает в нижней части выполняемого кода, как и ожидалось. счетчик $ вверху возвращает значение NULL, как и ожидалось, поскольку счетчик $ еще не существует. Независимо от того, когда и как я установил $counter = 0, я не могу получить число, которое мне нужно отобразить.

Ответ №1:

вы должны получить объект field, а затем посчитать строки. пример:

 $object = get_field('choir_videos');
$item_count = count($object);
  

возможно, вы хотите проверить, является ли объект массивом, прежде чем считать, потому что это может быть строка, int или массив.

редактировать: если вы хотите загрузить объект из другого сообщения, вы должны присвоить идентификатор сообщения методу get_field() — просто проверьте documentatin

Документация для метода get_field(): документация get_field()

Документация для метода count(): php count()

Ответ №2:

Итак, довольно неловко. Я просто прогоняю цикл while и подсчитываю, сколько раз он выполнялся, затем повторяю это, и все работает нормально. Святая корова, мой первый вопрос SO, и это была самая ПРОСТАЯ вещь. Тьфу.

 <p><strong>Total Videos:</strong>
    <?php 
        $vid_total = 0;
        while ( have_rows( 'choir_videos' ) ) : the_row(); 
        $vid_total  ;

     endwhile; 
    ?>
    <?php echo $vid_total ?>
</p>