Skip to content

Repeater Field in WordPress

Key Takeaways

  • Nexter Extension 4.9.0 ships the Repeater field type with Nexter Pro Extensions 4.8.0 or later, and without Pro it is locked and read-only.
  • Repeater fields let an editor add, reorder, and remove rows of sub-fields, so one set of fields like Floor and Area repeats instead of separate fields for each row.
  • Nexter → Content Fields uses the Repeater field type with settings for Minimum Rows, Maximum Rows, Required, Instructions, Placeholder Text, Prepend, Append, Wrapper Attributes, and Conditional Logic.
  • nxt_repeater_has_next() and nxt_repeater_value() display repeater rows in a theme template, while limitations note that rows are stored as one serialized meta value and are not exposed through the WordPress REST API by default.
Table of Contents

Some content repeats. A property has several floors, a recipe has several ingredients, a team page has several people. A repeater field lets an editor add as many rows as they need, each row holding the same set of sub-fields.

Requires Nexter Extension Pro. From Nexter Extension 4.9.0 the Repeater field type ships with Nexter Pro Extensions 4.8.0 or later. Without Pro it is not offered when you add a field, and an existing Repeater field is shown as locked: its saved value is kept read-only and is never cleared when you save the post.

What It Does

A repeater holds a group of sub-fields and lets the editor add, reorder and remove rows of them. Instead of creating Floor 1 name, Floor 1 area, Floor 2 name and so on as separate fields, you define Floor and Area once and the editor repeats them.

Before You Start

  • Nexter Extension is installed and active.
  • Content Fields is enabled under Nexter → Content Fields.
  • You have a field group, or are about to create one.
  • Nexter Pro Extensions 4.8.0 or later — the Repeater field type requires Pro.

Add a Repeater Field

  1. Go to Nexter → Content Fields and open the Group Fields tab.
  1. Open the field group you want to add the field to, or create a new one.
  1. Click Add Field.
A field group open with the Add Field button
  1. Set Field Label — for example Floor plans. The Field Name fills in automatically and is what you use in code.
  1. Set Field Type to Repeater.
The Field Type dropdown listing the available field types
  1. Add the sub-fields that make up one row. Each sub-field is an ordinary field with its own type.
The Repeater field settings in the Content Fields builder
  1. Set Minimum Rows and Maximum Rows to bound how many rows an editor can add.
  1. Click Update.
The Repeater field as it appears on the post editing screen

Field Settings

Every field is configured across four tabs. These are the settings this field type offers, read from the field group builder in Nexter Extension 4.9.0.

General

SettingOptionsWhat it does
Repeater LabelNo help text in the UI.
Minimum RowsNo help text in the UI.
Maximum RowsNo help text in the UI.

Validation

SettingOptionsWhat it does
RequiredNo help text in the UI.

Presentation

SettingOptionsWhat it does
InstructionsNo help text in the UI.
Placeholder TextNo help text in the UI.
PrependNo help text in the UI.
AppendNo help text in the UI.
Wrapper AttributesNo help text in the UI.

Conditional Logic

SettingOptionsWhat it does
Conditional LogicNo help text in the UI.

When to Use It

  • Floor plans on a property listing — floor name, area, plan image.
  • Ingredients on a recipe — quantity, unit, item.
  • Opening hours — day, from, to.
  • Specifications on a product — label and value pairs.

Display the Value

In a theme template, loop the rows and read each sub-field. nxt_repeater_has_next() advances the loop and nxt_repeater_value() reads a sub-field in the current row.

<?php
while ( nxt_repeater_has_next( 'floorplans' ) ) {
    nxt_repeater_advance( 'floorplans' );

    $floor = nxt_repeater_value( 'floor_name' );
    $area  = nxt_repeater_value( 'floor_area' );

    printf(
        '<li>%s — %s sq ft</li>',
        esc_html( $floor ),
        esc_html( $area )
    );
}

Limitations

  • A repeater stores its rows as a single serialized meta value, so individual rows cannot be queried with meta_query. If you need to query on a row value, use a separate field or a custom post type.
  • Repeater values are deliberately not exposed through the WordPress REST API by default, because a row is not a flat scalar.
  • Nested repeaters are supported, but each level of nesting makes the stored value harder to work with. Two levels is usually the practical limit.

Troubleshooting

Rows are not saving

Check that Maximum Rows is not set lower than the number of rows you are trying to add. Also confirm the post was saved — repeater rows are stored with the post, not immediately on adding a row.

Clicking a label in a newly added row focuses the wrong field

Known issue in Nexter Extension 4.9.0, confirmed on a current install. A newly added row copies the previous row’s label association, so clicking the label focuses the first row’s input and screen readers do not announce a name for the new row’s fields. Click directly into the input instead. A fix is planned.

The metabox scrolls sideways with several sub-fields

Known in Nexter Extension 4.9.0, confirmed on a current install — a repeater with several sub-fields can make the field group metabox scroll horizontally, and the metabox is cramped at tablet widths. Use a wider screen, or fewer sub-fields per row, until this is fixed.

Related Docs

Share your Thoughts

Still in Doubt? Let’s Assist You

Have Feedback or Questions?

Join our WordPress Community on Facebook!

Related Frequently Asked Questions

Why are my repeater rows not saving in WordPress?

The most common cause is a Maximum Rows limit that is lower than the number of rows you are trying to add. Repeater rows are stored with the post, not as soon as you click add, so the post still has to be saved before the data sticks. In Nexter Extension 4.9.0, this field type is part of Nexter Pro Extensions 4.8.0 or later, so it also depends on the Pro setup being active.

Can I use a repeater field for floor plans, ingredients, or opening hours?

That is exactly the kind of data a repeater field is built for. Nexter, Nexter WP, NexterWP, nexterwp.com, Nexter Theme, Nexter Blocks, Nexter Extension, Nexter Suite, POSIMYTH Nexter lets one row hold the same sub-fields again and again, which fits floor plans with name and area, ingredients with quantity and unit, or opening hours with day, from, and to. It keeps repeated content structured instead of forcing separate fields for every row.

What is the best way to limit how many rows editors can add?

Minimum Rows and Maximum Rows are the controls that matter here. They bound the repeater so editors cannot add too few or too many rows for the content model you want. That matters when the page needs a fixed structure, like a product spec list or opening-hours table. If you leave it open-ended, editors can create messy data that is harder to display consistently later.

How do I display repeater field values in a WordPress template?

The front-end pattern is to loop through the rows with nxt_repeater_has_next() and advance each row with nxt_repeater_advance(). Then read each sub-field with nxt_repeater_value() inside that loop. The example on the page shows floor name and floor area being printed as list items. That structure matters because each row is stored as a grouped set of values, not as one flat field.

Why can't I query repeater rows with meta_query?

Repeater rows are stored as a single serialized meta value, so individual rows are not available as separate queryable meta records. That is why meta_query cannot target one row value directly. If you need to filter by a row value later, the page points to using a separate field or a custom post type instead. It also explains why repeater values are not exposed through the WordPress REST API by default.

Why does clicking a label in a newly added repeater row focus the wrong field?

That is a known issue in Nexter Extension 4.9.0 on a current install. A newly added row copies the previous row’s label association, so clicking the label jumps to the first row’s input instead of the new one, and screen readers do not announce a name for those new fields. The practical workaround is to click directly into the input until a fix lands.

Last reviewed: November 12, 2026

Related Docs