ACF Repeater Loop in Divi Builder Complete Implementation Guide

by | Jul 24, 2026 | Divi Tutorials | 0 comments

Divi’s Dynamic Content feature pulls single values from the database. It handles text fields, image fields, URLs.

But ACF repeater fields store multiple rows of structured data, and Dynamic Content has no way to loop through them. That’s why your repeater data never appears.

We’ll cover every working method for displaying ACF repeater fields in Divi. You’ll get the native Divi 5 approach using Loop Builder, a complete PHP implementation that works in any Divi version, and a brief look at third-party plugin options.

Note: Repeater fields require ACF Pro. The free version of Advanced Custom Fields doesn’t include them.

Why doesn’t Divi show my ACF repeater?

An ACF repeater field stores multiple rows of data where each row contains the same set of subfields.

A property listing might have a repeater called property_features, with each row holding a feature_name text subfield and a feature_icon image subfield. Ten features means ten rows, all with that identical structure.

Dynamic Content can only retrieve a single value from the database. One text field, one image, one URL. It works perfectly for simple ACF fields because those store exactly one value.

The process of displaying ACF fields in Divi modules, however, is different from displaying repeater content.

A repeater field stores an array of rows, and each row contains its own set of values. There is no mechanism in Dynamic Content to iterate through that array and output each row individually.

This is an architectural limitation. Dynamic Content was built for value insertion, not data iteration. Displaying a repeater requires loop logic: start at row one, output its subfields, move to row two, repeat until done.

Divi 5’s Loop Builder adds native iteration by letting you select “ACF Repeater” as a query type. Divi 4 has no equivalent, so you need PHP loops or a third-party plugin to handle the iteration.

Repeater Fields vs. Flexible Content Fields vs. Divi ACF Object Loop

These ACF field types look similar but work differently:

  • Repeater fields use a fixed row structure with identical subfields (e.g., photo, name, bio). Use them when each entry follows the same pattern (features, locations, testimonials, pricing tiers).
  • Flexible Content fields allow different layout types per row (text block, gallery, video, etc.), acting like a mini page builder. In code, you must check each row’s layout type before rendering.
  • Post Object and Relationship fields link to other posts (e.g., related articles, team members). Tools like the Divi ACF Object Loop work with these linked posts, not repeater rows.

Our focus here is exclusively on repeater field implementation.

Choosing the right implementation path

Divi 5 has a native Loop Builder that handles repeaters visually with no code. Jump to the Divi 5 section if that’s your version.

Divi 4 doesn’t have Loop Builder at all. Your options are PHP loops or a third-party plugin.

PHP works in both versions and gives you full control over HTML output and formatting. If that matters to you, jump to the PHP section regardless of your Divi version.

If you need advanced layouts like tables, accordions, or tabs, expect to write custom CSS no matter which method you choose.

💡 ACF repeaters work with any WordPress theme through PHP. Loop Builder is simply Divi’s visual interface for the same underlying iteration. We’re looking at Loop Builder only for its repeater functionality, but it also handles post queries, taxonomies, and archives.

Divi 5 native implementation with Loop Builder

The next couple of sections will go through using ACF repeater fields with Divi 5’s Loop Builder. They cover everything from setting up your fields in ACF to rendering them on the frontend.

Step 1: Setting up your ACF Repeater Field

Reminder: ACF repeater fields require ACF Pro.

When you’re all set up, here’s how to create repeater fields using ACF:

1. From your admin dashboard, go to ACF > Field Groups.

2. Add a new field group and give it a title at the top of the page.

3. In the Fields section, select Repeater from the dropdown.

Adding ACF repeater field

4. A new Sub Fields section should appear, where you can add the secondary fields within the repeater. These can be the usual simple field types, like text, image, and number. You can also nest in other repeater fields, but these complicate things and aren’t easy to output. Here’s what the structure of a complete repeater should look like:

ACF repeater field structure

5. Tweak any other settings as needed, like the location rules, and save your changes.

Next, open the area where you expect the repeater to show up. This could be a post or page, according to the location rules set. Fill in the repeater field content and save your changes.

Filling in ACF repeater meta boxes

Step 2: Building the loop in Divi 5

With your data ready, open the post or page in Divi and follow these steps to render your ACF repeater content:

  1.  Add the Divi modules where you want to output the repeater content. For this walkthrough, we’ll do two text modules side by side: one for the tier and another one for the price.

Adding Divi text modules for repeater fields

2. Select one of the Text modules and, under its Content tab, scroll to the Loop section and toggle Loop Element on.

3. From the Query Type dropdown, select your ACF repeater field.

Selecting repeater field for Divi Loop Builder

4. Scroll up to the module’s Text section and hover over the Body section to reveal additional options.

5. Click the stacked disc icon to insert dynamic content.

Activating dynamic content for Divi

6. Choose your ACF repeater subfield from the list.

Selecting ACF repeater subfield for dynamic content

7. Repeat this process with the other module to output the remaining subfield data. Add any before or after text as needed – this one adds a dollar sign before the prices – and you should have the basic structure ready.

Using Divi to display ACF repeater fields

Controlling layout and responsive display

Your row’s column structure controls how repeater items are arranged on the page. A three-column row creates a grid, a single-column row creates a vertical list. Divi applies each repeater row’s content into the column layout you define.

For responsive behavior, adjust column counts per breakpoint. Two columns on tablet, one on mobile. Use Divi’s responsive editing controls on the row settings. Control vertical spacing between repeater items through module margin and padding settings.

To handle empty subfields, use Divi’s Display Conditions to hide modules when their dynamic content value is blank, preventing gaps in the layout.

For complex layouts like tables or accordions, you’ll need custom CSS on top of the Loop Builder output.

Using PHP loops for any Divi version and theme

PHP loops give you the most portable approach to displaying ACF repeater data in Divi.

They work identically in Divi 4 and Divi 5, give you complete control over HTML structure, conditional logic, and output formatting, and don’t depend on Divi shipping new features.

If you need to integrate repeater output into custom workflows or want zero plugin dependencies beyond ACF Pro itself, this is the route.

There’s a trade-off in that you need basic PHP knowledge, and edits happen in code rather than the visual builder.

Create a basic PHP loop structure

Use the same ACF field group setup from the Divi 5 section above. For this example, we’re working with the same repeater field from above.

This code works in theme templates, child theme partials, and shortcode callbacks. When used outside the main WordPress loop (sidebars, footers, Theme Builder templates), you’ll need to pass the post ID explicitly.

Otherwise, WordPress won’t know which post’s data to pull.

Here’s the complete loop structure you can drop in. We’ve included comments to help you follow along:

/*
<?php
// 1. Define the post ID (required outside the main WordPress loop)
$post_id = get_the_ID();

// 2. Check if the repeater field has any rows
if ( have_rows('ticket_types', $post_id) ) : ?>

  <!-- 3. Open the HTML wrapper -->
  <ul class="ticket-types">

    <?php
    // 4. Loop through each repeater row
    while ( have_rows('ticket_types', $post_id) ) :
      the_row();

      // 5. Retrieve subfield values
      $tier  = get_sub_field('tier');
      $price = get_sub_field('price');

      // 6. Skip output if both subfields are empty
      if ( empty($tier) && empty($price) ) {
        continue;
      }
      ?>

      <!-- 7. Output a single repeater row -->
      <li class="ticket-types__item">

        <?php if ( ! empty($tier) ) : ?>
          <span class="ticket-types__tier">
            <?php echo esc_html($tier); ?>
          </span>
        <?php endif; ?>

        <?php if ( ! empty($price) ) : ?>
          <span class="ticket-types__price">
            <?php echo esc_html($price); ?>
          </span>
        <?php endif; ?>

      </li>

    <?php endwhile; ?>

  </ul>

<?php endif; ?>
*/

Integration options with Divi

You have three ways to get this PHP into your Divi pages:

  • Code Module places PHP directly on any page through Divi’s built-in Code Module. No file editing required. However, you’ll need to copy the code manually to every page that needs it.
  • Shortcode in functions.php wraps your loop in a registered shortcode, then you insert that shortcode into any Divi text or code module site-wide. Updates happen in one location and apply globally. As manageable as it is, it’s being phased out of Divi.
  • Theme Builder template adds the code to a custom template file used with Divi’s Theme Builder. The output displays automatically on all matching post types without manual insertion on each page. It’s ideal for custom post type archives like property listings or team directories.

Performance and scale considerations

Repeater fields add database queries proportional to the number of rows and subfields. These optimizations keep things fast as your data grows.

  • Field group definitions load from the database on every page request by default. Enable Local JSON in Settings > ACF > Save/Load JSON to store them as static files instead.
  • ACF requires a reasonably current PHP version, and shared hosting often struggles with large repeater queries. Use managed WordPress hosting for any site where repeaters hold more than a handful of rows.
  • Content that appears on every page, like contact details or locations, generates redundant post meta queries if stored in a regular field group. Move this data to ACF Options Pages, which store in the wp_options table with autoloading for faster retrieval.
  • Large repeaters can freeze the WordPress editor and cause browser timeouts during content entry. Enable ACF’s built-in pagination in the field settings to split the editing interface into manageable pages.

Troubleshooting common issues

Here are some problems you might encounter working with ACF repeaters in Divi and what to do:

  • If your repeater shows nothing on the frontend and the page renders as if the field doesn’t exist, your field group Location Rules are likely assigned to the wrong post type. Open ACF > Field Groups and confirm the rules match the post type you’re editing.
  • When the field group assignment is correct, but the output is still empty, the post itself may have no data saved. Open the post in the WordPress editor and verify that repeater rows actually exist.
  • Should your repeater still not display even though data exists in the post, the Loop Element toggle is probably off or misconfigured. Enable it on your module and set the Query Type to ACF Repeater with your field name selected.
  • If your PHP implementation returns nothing despite data being present and the field group assigned correctly, the field name in your code doesn’t match ACF exactly. Field names are case-sensitive, so team_members and Team_Members return different results.
  • When your repeater displays data, but it’s pulling from the wrong post, you’re likely using PHP outside the main WordPress loop. Pass the post ID explicitly with get_field(‘field_name’, $post_id) in sidebars, footers, or any template partial.
  • If the spacing between repeater items looks wrong or columns break on smaller screens, your layout settings need adjusting. Check module margins and responsive column settings; in PHP, add CSS classes to your markup and test on actual devices.
  • Where pages with repeaters load noticeably slower than the rest of the site, database query overhead is the likely cause. Enable ACF Local JSON, turn on pagination for large repeaters, and verify your server runs PHP 7.4 or higher.

Implement your ACF repeater fields today

ACF repeater fields require looping logic. Divi’s Dynamic Content icon doesn’t work with them because it was built to insert single values, not iterate through rows.

Once you understand that distinction, the fix is straightforward regardless of which path you choose.

Divi 5 users have a native visual option. Everyone else has PHP or plugins. All roads lead to the same result.

Our plugin collection tackles many of the workflow gaps Divi developers run into daily. Take a look and see what might save you time on your next build.

Now go give your clients the power to manage their own team directories, product features, and location lists without calling you for every update.

The Ultimate Divi Toolkit 🚀

The Divi Life All Access Pass membership is a complete Divi toolbox with all the Divi plugins, child themes, layouts, & templates you'll ever need to create incredible Divi websites.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *