Guide

Repeater Control

PHP Field Configuration Reference

Repeater

Use this config when fieldType is repeater.

A repeater allows users to add multiple rows of grouped fields. Each row can contain any supported field types.

1) Base Parameters

ParameterRequiredTypeDefaultChoicesDescription
fieldTypeYesstringrepeaterrepeaterSets control type.
nameYesstringSets control name. Use snake_case.
fieldLabelYesstringSets control label.
requiredNoboolfalsetrue, falseSets control required.
disabledNoboolfalsetrue, falseSets control disabled.
hideLabelFromVisionNoboolfalsetrue, falseSets control hide label from vision.
fieldHelpTextNostringSets control help text.
classNameNostringSets control css class name.
fieldLabelPositionNostringtoptop, leftSets control label position.
fieldLabelTextTransformNostringuppercaseuppercase, capitalize, lowercaseSets control label text transform.

2) Repeater Specific Parameters

ParameterRequiredTypeDefaultChoicesDescription
layoutNostringtabletable, panelSet repeater layout.
addButtonTextNostringAdd ItemText for the add new item button.
minNoint0Minimum number of items allowed.
maxNoint50Maximum number of items allowed.
initialOpenNoboolfalsetrue, falseWhether repeater item panels are open initially. Only used when layout is panel.

3) PHP Array Schema

Here is an example of how to use the repeater control in a post meta configuration:

[
    'fieldType' => 'repeater',
    'name' => 'post_repeater',
    'fieldLabel' => 'Post Repeater',
    'required' => false,
    'disabled' => false,
    'hideLabelFromVision' => false,
    'fieldHelpText' => 'Add multiple items.',
    'className' => 'custom-class',
    'fieldLabelPosition' => 'top',
    'fieldLabelTextTransform' => 'uppercase',
    'layout' => 'table',
    'addButtonText' => 'Add Item',
    'min' => 0,
    'max' => 50,
    'fields' => [
        // child fields go here
    ],
]

3) Hook-Based Example (Post Meta Config)

It is available to use this control in post meta fields, term meta fields and user settings page and options page fields.

Available hooks:

  • native_custom_fields_post_meta_fields
  • native_custom_fields_term_meta_fields
  • native_custom_fields_user_meta_fields
  • native_custom_fields_options_page_fields
add_filter( 'native_custom_fields_post_meta_fields', function( array $configs ): array {
    $post_type = 'book';

    if ( ! isset( $configs[ $post_type ] ) || ! is_array( $configs[ $post_type ] ) ) {
        $configs[ $post_type ] = [
            'post_type' => $post_type,
            'sections'  => [],
        ];
    }

    $configs[ $post_type ]['sections'][] = [
        'meta_box_id'       => 'post_options',
        'meta_box_title'    => 'Post Options',
        'meta_box_context'  => 'normal',
        'meta_box_priority' => 'default',
        'fields'            => [
            [
            'fieldType' => 'repeater',
            'name' => 'post_repeater',
            'fieldLabel' => 'Post Repeater',
            'required' => false,
            'disabled' => false,
            'hideLabelFromVision' => false,
            'fieldHelpText' => 'Add multiple items.',
            'className' => 'custom-class',
            'fieldLabelPosition' => 'top',
            'fieldLabelTextTransform' => 'uppercase',
            'layout' => 'table',
            'addButtonText' => 'Add Item',
            'min' => 0,
            'max' => 50,
            'fields' => [
                [
                    'fieldType' => 'text',
                    'name' => 'item_title',
                    'fieldLabel' => 'Title',
                ],
                [
                    'fieldType' => 'textarea',
                    'name' => 'item_description',
                    'fieldLabel' => 'Description',
                ],
            ],
            ],
        ],
    ];

    return $configs;
} );

4) Stored Value Type

Field TypeMeta Value Type
repeaterstring (serialized JSON array of row objects, for example [{"item_title":"Row 1","item_description":"Description 1"},{"item_title":"Row 2","item_description":"Description 2"}])

Was this helpful?