Support

Account

Home Forums Add-ons Repeater Field How to count the number of repeater fields within a flexible layout?

Solved

How to count the number of repeater fields within a flexible layout?

  • I’m trying to get a count for the number of columns in my multi-column_row so I can use the number of columns when building my layout. I feel like i’ve tried every example I could find but I still can’t seem to get the number of rows BEFORE doing my while loop.

    Here’s my ACF Loop:

    <?php if ( have_rows( 'content' ) ): ?>
    <?php while ( have_rows( 'content' ) ) : the_row(); ?>
    <?php if ( get_row_layout() == 'text_on_white' ) : ?>
    <?php the_sub_field( 'anchor_link' ); ?>
    <?php the_sub_field( 'text' ); ?>
    <?php elseif ( get_row_layout() == 'centered_video' ) : ?>
    <?php the_sub_field( 'anchor_link' ); ?>
    <?php $thumbnail_image = get_sub_field( 'thumbnail_image' ); ?>
    <?php if ( $thumbnail_image ) : ?>
    " alt="<?php echo esc_attr( $thumbnail_image['alt'] ); ?>" />
    <?php endif; ?>
    <?php the_sub_field( 'video_url' ); ?>
    <?php elseif ( get_row_layout() == 'multi-column_row' ) : ?>
    <?php the_sub_field( 'anchor_link' ); ?>
    <?php if ( have_rows( 'columns' ) ) : ?>
    <?php while ( have_rows( 'columns' ) ) : the_row(); ?>
    <?php $image = get_sub_field( 'image' ); ?>
    <?php if ( $image ) : ?>
    " alt="<?php echo esc_attr( $image['alt'] ); ?>" />
    <?php endif; ?>
    <?php the_sub_field( 'wysiwyg' ); ?>
    <?php endwhile; ?>
    <?php else : ?>
    <?php // No rows found ?>
    <?php endif; ?>
    <?php elseif ( get_row_layout() == 'divider_line' ) : ?>
    <?php // Warning: Layout 'divider_line' has no sub fields ?>
    <?php endif; ?>
    <?php endwhile; ?>
    <?php else: ?>
    <?php // No layouts found ?>
    <?php endif; ?>

    I’ve tried
    $count = count(get_field('grid_block'));
    <?php
    $cards = get_sub_field('card');
    if(have_rows('card')):
    $number_of_cards = count($cards);
    endif; ?>

    and neither are working. Any tips?

  • I don’t see how the second parts of your code fit into the first.

    To get the count of rows it is either

    
    $count = count(get_field('repeater_field_name'));
    

    OR

    
    $count = count(get_field('repeater_field_name'));
    

    depending, of course if it is a sub field.

    In any case you must get the count of rows before calling have_rows() for the repeater you want the count of.

Viewing 2 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic.