#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>