have_rows

Эта функция проверяет наличие данных в родительском поле (таком как Repeater (Повторитель) или Flexible Content). Каждую итерацию цикла функция проверяет есть ли еще данные, которые не выведены в цикле, и возвращает true или false.

Это функция работает в сочетании с the_row() с помощью которой осуществляется переход на следующую строку в данных.

Функция have_row() вместе с the_row() специально созданы для совместной работы как have_posts() и the_post() в WordPress.

Параметры

have_rows( $selector, [$post_id = false] );
  • $selector (строка) (Обязательный параметр) Имя или ключ поля
  • $post_id (смешанный тип) (Необязательный) ID поста для которого нужно вывести данные. По умолчанию это текущий пост.

Возвращаемое значение

Возвращает булевый тип. Если данные есть, то true

Примеры использования

Базовое применение

В примере показано как цикл итерирует элементы Повторителя и именем "parent_field" и подгружает его дочерние поля.

if( have_rows('parent_field') ):
    while ( have_rows('parent_field') ) : the_row();
        $sub_value = get_sub_field('sub_field');
        // Do something...
    endwhile;
else :
    // no rows found
endif;

Вывод слайдера

Цикл создает разметку из поля Повторителя чтобы создать слайдер.

<?php if( have_rows('slides') ): ?>
    <ul class="slides">
    <?php while( have_rows('slides') ): the_row(); 
        $image = get_sub_field('image');
        ?>
        <li>
            <?php echo wp_get_attachment_image( $image, 'full' ); ?>
            <p><?php the_sub_field('caption'); ?></p>
        </li>
    <?php endwhile; ?>
    </ul>
<?php endif; ?>