Skip to content

How to Display ACF Repeater Fields in Elementor (3 Ways)

Key Takeaways

  • The Plus Addons for Elementor Dynamic Listing widget supports ACF Repeater in Post Listing Types and repeats one card template for every row.
  • The card template needs ThePlus Elementor Options set to Render Mode: ACF Repeater Content, plus a preview post and the repeater selected in Select ACF Field.
  • The Accordion widget uses Content Source: ACF Repeater and maps one title field and one content field, such as title and content, for FAQ, product details, and course outlines.
  • ACF repeater rows can be hidden without deleting them by adding a True/False sub field like show_on_site and enabling ACF Repeater Boolean Conditions.
  • ACF functions have_rows, the_row, get_sub_field, and the_sub_field power a shortcode that prints team_members as a list with name and role.

A team page with eight people. A product with a dozen specs. A course with a list of lessons, each with a title, a length and a link. Advanced Custom Fields handles this kind of content with one field type: the Repeater. Editors add as many rows as they need, and every row keeps the same set of sub fields.

The catch comes when you open Elementor. A heading or an image widget expects one value, and a repeater holds a list of rows. So the usual question is not “where is my field?” but “how do I loop over it?” This guide answers that with three working methods: a card loop with the Dynamic Listing widget in The Plus Addons for Elementor, an accordion built from repeater rows, and a short code snippet for anyone who prefers to write the loop by hand.

The setting names in this guide come from our own documentation and the widget code of The Plus Addons for Elementor, checked on 15 November 2026.

Table Of Contents

What Is an ACF Repeater Field?

A Repeater is a field that contains other fields, called sub fields, and lets an editor add those sub fields again and again as rows. The ACF documentation for the Repeater describes it as a solution for repeating content such as slides, team members and CTA tiles.

Picture a repeater named team_members with three sub fields: name, role and photo. On one page the editor adds four rows, on another page twelve. The field group stays the same, only the number of rows changes. That flexibility is the whole point, and it is also why the data needs a loop to show up on the front end.

One thing to check before you build anything: the Repeater is not part of the free Advanced Custom Fields plugin. You need ACF PRO, or Secure Custom Fields (SCF), the community version on WordPress.org, which includes repeater fields.

An acf field set to the repeater type next to the dynamic listing widget with post listing types set to acf repeater

Why a Repeater Needs a Loop in Elementor

Elementor shows custom fields through dynamic tags. You click the dynamic icon next to a control, pick a tag, pick a field, and the widget shows that value. This works well for a single value, such as one text field or one image.

A repeater is different because its sub fields only exist inside a row. There is no single “photo” value on a team page, there is a photo for row one, another for row two, and so on. The ACF dynamic tags in The Plus Addons for Elementor Pro follow the same logic: they list your regular fields and the fields inside an ACF Group, but they skip repeater sub fields on purpose, because those only have a value per row.

So the job is to find a widget that walks through the rows one by one and renders a design for each. The rest of this guide covers three ways to do that.

What You Need Before You Start

You needWhy
Elementor (the free version works)The page builder that the widgets run in
ACF PRO or Secure Custom FieldsThe free ACF plugin has no Repeater field
The Plus Addons for Elementor ProMethods 1 and 2 use Pro features: the Dynamic Listing widget and the ACF Repeater source in the Accordion
A single template for your post typeThe widgets read the rows of the post being viewed, so they belong in a single post template. Build it with the Elementor Pro Theme Builder or the free Nexter Builder

If you only need the code method, Elementor and ACF PRO (or SCF) are enough.

Step 1: Create the Repeater Field Group

Start in WordPress, not in Elementor. The field group defines what each row contains.

  1. In your dashboard, open ACF and add a new field group. Give it a clear title, for example “Team”.
  2. Add a field, set its Field Type to Repeater, and give it a name such as team_members. Write the name down, because Elementor will ask for the name, not the label.
  3. Inside the repeater, add the sub fields that each row needs: for example a Text field name, a Text field role and an Image field photo.
  4. Set the location rules so the group appears on the right content, for example on a custom post type called Projects or on your Team page.
  5. Save the field group.

Keep sub field names short, lowercase and without spaces. You will type them into widget settings later, and a single wrong character is the most common reason a loop shows nothing.

Step 2: Add Rows to a Post

Open a post or page that uses the field group. Below the editor you will see the repeater with an Add Row button. Add a few rows and fill in every sub field, then update the post.

Add a few rows while you build the design. A single row hides layout problems such as uneven card heights, which only appear once several rows sit side by side.

Method 1: Show Repeater Rows as Cards With the Dynamic Listing Widget

The Dynamic Listing widget is the Pro widget in The Plus Addons for Elementor for building loops. Its main switch, Post Listing Types, offers Normal Page, Archive Page, Single Page Related Posts, ACF Repeater, Custom Query, Search List and Wishlist. The ACF Repeater option loops over the rows of a repeater instead of running a WordPress query, and repeats a card template for every row. Our doc on showing ACF repeater data on a single post page covers the same setup in reference form.

Post listing types options in the dynamic listing widget, including acf repeater

Turn On the Widget

Go to The Plus Addons > Widgets, search for Dynamic Listing and switch it on. It needs The Plus Addons for Elementor Pro with an active licence, so it will not appear in the free plugin.

Add It to the Single Template

Open the single template for the post type that holds the repeater and drag the Dynamic Listing widget into it. In the Content tab, set Post Listing Types to ACF Repeater. The panel then shows the settings for this mode.

Choose or Create the Card Template

Each row is rendered with an Elementor template that you design once. Use Select a template to pick a saved template, or Create Template to start one. Until a template is selected, the widget shows the message “Please select a template” in place of the listing.

The card template needs one setting outside Elementor so that it reads repeater rows. Open the template’s WordPress edit screen (the regular post editor for the template, not the Elementor canvas) and find the box called ThePlus Elementor Options. Set Render Mode to ACF Repeater Content, choose a post that has rows in Select Preview Post, pick your repeater in Select ACF Field, and update the template. Without this, the card has no row to read.

Now design the card in Elementor. Place the TP Custom Field widget from The Plus Addons for Elementor Pro wherever a value from the row should appear, and type the sub field name into its Name setting, for example name or role. Its Field Type setting tells it what kind of value to print, with options such as Default, Image, Link, Video, Audio, Date, Html and oEmbed. When the listing renders, the template is printed once per row, and each card shows the values of its own row.

Point the Widget at Your Repeater

Set ACF Field Type to Default to pick the repeater from the ACF Repeater Field list, or to Custom to type its name. If your field group was registered with PHP and does not appear in the list, switch to Custom and type the name. Our documentation notes that typing the name works even when the picker misses the field.

Acf repeater settings in the dynamic listing widget: select a template, create template, acf field type and acf repeater field

Hide Rows You Do Not Want to Show

Need to keep some rows out of the listing without deleting them? Add a True/False sub field to the repeater, for example show_on_site. Then turn on ACF Repeater Boolean Conditions and type that sub field name into Boolean Field Name. Rows where that sub field is off or empty are skipped. This is handy for seasonal items, past team members or draft entries.

Pick a Layout

The Layout setting offers Grid, Masonry, Metro and Carousel, the same layouts as other Dynamic Listing modes. Grid suits uniform cards such as team members, Masonry suits cards with text of different lengths, Metro mixes tile sizes for portfolios, and Carousel keeps a long list in one sliding row.

Layout options in the dynamic listing widget: grid, masonry, metro and carousel

Save the template and open a post that has rows. Each row now appears as its own card, and when an editor adds a row to the post, a new card appears with no change in Elementor.

Method 2: Turn Repeater Rows Into an Accordion

FAQs, product details and course outlines are often stored as a repeater with one title and one block of text per row. For that shape, the Accordion widget in The Plus Addons for Elementor can build its items straight from the repeater. The ACF Repeater source is a Pro feature; in the free plugin the option shows an upgrade notice instead.

  1. Create a repeater, for example product_details, with two sub fields: a Text field title and a Text Area or WYSIWYG field content.
  2. Fill in the rows on your posts.
  3. Add the Accordion widget to the single template of that post type.
  4. Set Content Source to ACF Repeater.
  5. In Repeater Field Key, enter the repeater name, here product_details.
  6. In Title and Content, enter the sub field names, here title and content.
  7. Save the template.
Accordion widget with content source set to acf repeater and the repeater field key, title and content settings

Each post now shows its own rows as accordion items. Keep two limits in mind: each item uses one title field and one content field, and items built from ACF have no per-item icons or unique IDs. The full walkthrough is in our doc on creating an accordion with repeater field data, and our post on building an FAQ accordion in Elementor covers styling.

Method 3: Loop Over the Repeater With a Shortcode

If you are comfortable with PHP, or you only need a simple list, you can write the loop yourself. ACF provides these functions for it: have_rows, the_row, get_sub_field and the_sub_field. The snippet below registers a shortcode that prints the name and role of each team member on the current post as a list.

add_shortcode( 'team_members', function () {
    if ( ! function_exists( 'have_rows' ) || ! have_rows( 'team_members' ) ) {
        return '';
    }
    $html = '<ul class="team-members">';
    while ( have_rows( 'team_members' ) ) {
        the_row();
        $html .= '<li><strong>' . esc_html( get_sub_field( 'name' ) ) . '</strong> '
               . esc_html( get_sub_field( 'role' ) ) . '</li>';
    }
    return $html . '</ul>';
} );

Add the code with a code snippets plugin or in a child theme, never in a parent theme that updates. Then place Elementor’s Shortcode widget in your single template and enter [team_members]. The function names and the loop pattern follow the have_rows documentation from ACF.

The trade-off is clear: you get full control of the HTML, but every design change means editing code, and styling happens in CSS rather than in the Elementor panel.

Which Method Should You Use?

Dynamic ListingAccordionShortcode
Best forCards: team, projects, products, testimonialsFAQs, specs, course outlinesSimple lists, developer builds
DesignAny Elementor template per rowAccordion styling in the panelYour own HTML and CSS
LayoutsGrid, Masonry, Metro, CarouselAccordionWhatever you code
Hide rows without deletingYes, with a True/False sub fieldNot covered in our docsYes, with your own condition
NeedsThe Plus Addons for Elementor ProThe Plus Addons for Elementor ProPHP knowledge

For most sites, Dynamic Listing is the most flexible choice because the card is a normal Elementor template. Use the Accordion when the data is question and answer shaped. Keep the shortcode for cases where you want plain markup or no extra widgets.

Practical Tips for Repeater Layouts

  • Name fields once, then reuse. A consistent naming scheme such as team_members, name, role makes widget settings easy to fill and easy to check.
  • Set a fallback for empty values. Editors skip fields. Design the card so it still looks fine when a role or photo is missing.
  • Use the Carousel layout for long lists. Twenty cards in a grid push the rest of the page down. A carousel keeps them in one row.
  • Use a True/False sub field instead of deleting rows. It keeps old content for later and lets editors hide rows themselves.
  • Test with a post that has many rows and one that has none. Both cases happen on real sites.

Troubleshooting ACF Repeater Fields in Elementor

  • The listing shows “Please select a template”. Pick or create a card template under Select a template.
  • The listing or accordion is empty. Check that the names match exactly, that the post has rows, and that you are viewing a post that uses the field group. A widget in a single template reads the post being viewed, so it shows nothing on a page without repeater data.
  • Your repeater is missing from the ACF Repeater Field list. Set ACF Field Type to Custom and type the field name. Field groups registered in PHP may not appear in the list.
  • A repeater inside a repeater is missing. Nested repeaters may not display. Our documentation lists nested repeaters as not tested, and the listing loops over one level of rows, so plan for a single level.
  • The cards are empty or show the same value on every row. Open the card template’s edit screen and check that ThePlus Elementor Options has Render Mode set to ACF Repeater Content and the right field in Select ACF Field. Then check that each TP Custom Field widget uses a sub field name, not the repeater name.
  • Styles look broken after an update. Go to The Plus Settings > Performance and click Purge all cache, then clear any cache plugin and your browser cache. This is the fix the plugin FAQ gives for broken styles.

Going Further With Dynamic Content

Repeaters are one part of building dynamic sites in Elementor. For regular single-value fields, the Dynamic Tag extension adds Plus tag groups to Elementor’s dynamic picker; the Post and Site groups are free, and the ACF, User, Archive and WooCommerce groups need Pro. Our guide on adding dynamic content in Elementor explains each group, and the post on dynamic tags without Elementor Pro covers the free side.

If you want to sort or filter normal post loops as well, read about custom order in an Elementor loop grid and the guide to custom loop skins. To compare what the free and Pro plans include, see The Plus Addons free vs Pro, or look at the ACF Repeater feature page for live examples.

Frequently Asked Questions

Does the Free Version of ACF Include the Repeater Field?

No. The Repeater field is part of ACF PRO. Secure Custom Fields, the community plugin on WordPress.org, also includes repeater fields.

Can I Show ACF Repeater Fields in Elementor Without Elementor Pro?

Yes. The Plus Addons for Elementor works with the free version of Elementor, and you can build the single template with the free Nexter Builder. The Dynamic Listing widget and the ACF Repeater source in the Accordion need The Plus Addons for Elementor Pro. The shortcode method needs no addon at all.

Can Elementor Dynamic Tags Read Repeater Sub Fields?

Not on their own. Dynamic tags show one value, while repeater sub fields only have a value inside a row. Use a widget that loops over the rows, such as Dynamic Listing in ACF Repeater mode, or write the loop with ACF functions.

Can I Show Repeater Rows in a Carousel?

Yes. In the Dynamic Listing widget, set Post Listing Types to ACF Repeater and choose Carousel under Layout.

Can I Hide Some Rows Without Deleting Them?

Yes. Add a True/False sub field to the repeater, turn on ACF Repeater Boolean Conditions in Dynamic Listing and enter the sub field name in Boolean Field Name. Rows where that sub field is off or empty are not shown.

Does This Work With Nested Repeaters?

Plan for one level. The Dynamic Listing loop reads the rows of one repeater, and nested repeaters are not covered by our tested setup.

Suggested Reading

Related Frequently Asked Questions