

RepeaterKit field in edit screen with Table layout and drag-and-drop reordering.
RepeaterKit is a lightweight, high-performance, and developer-friendly repeater field plugin designed specifically for the free version of Advanced Custom Fields (ACF Free) and Secure Custom Fields (SCF).
Need to build repeatable rows of content – like FAQs, customer reviews, team rosters, pricing tables, product specs, or feature lists – without paying for an expensive subscription? RepeaterKit brings full repeater capabilities straight to your free ACF or SCF setup with zero bloat and zero upsells.
wp_postmeta database table, RepeaterKit stores all row data in a single clean, optimized record. Your database stays lean and queries run at peak speed.wp.a11y.speak.get_field().RepeaterKit includes built-in support for all primary field types:
RepeaterKit provides a modern, secure, and context-aware loop API modeled after classic WordPress conventions.
Outputting a list of repeatable items on your single template or page template:
<?php if ( repeaterkit_have_rows( 'faq_list' ) ) : ?>
<div class="faq-accordion">
<?php while ( repeaterkit_have_rows( 'faq_list' ) ) : repeaterkit_the_row(); ?>
<div class="faq-item">
<h3><?php repeaterkit_the_sub_field( 'question' ); ?></h3>
<div class="faq-answer">
<?php repeaterkit_the_sub_field( 'answer', 'wysiwyg' ); ?>
</div>
</div>
<?php endwhile; ?>
</div>
<?php endif; ?>
When you need to perform calculations, check conditions, or manipulate values before displaying:
<?php if ( repeaterkit_have_rows( 'team_members' ) ) : ?>
<div class="team-grid">
<?php while ( repeaterkit_have_rows( 'team_members' ) ) : repeaterkit_the_row(); ?>
<?php
$name = repeaterkit_get_sub_field( 'name', 'Team Member' );
$role = repeaterkit_get_sub_field( 'role', '' );
$image_id = repeaterkit_get_sub_field( 'photo' );
$bio = repeaterkit_get_sub_field( 'bio', '' );
?>
<div class="team-card">
<?php if ( $image_id ) : ?>
<?php echo wp_get_attachment_image( (int) $image_id, 'medium', false, array( 'class' => 'team-avatar' ) ); ?>
<?php endif; ?>
<h4><?php echo esc_html( $name ); ?></h4>
<?php if ( $role ) : ?>
<span class="team-role"><?php echo esc_html( $role ); ?></span>
<?php endif; ?>
<?php if ( $bio ) : ?>
<p class="team-bio"><?php echo esc_html( $bio ); ?></p>
<?php endif; ?>
</div>
<?php endwhile; ?>
</div>
<?php endif; ?>
repeaterkit_the_sub_field()repeaterkit_the_sub_field() accepts an optional second parameter to ensure proper escaping for your target context:
<?php // Escaping as safe HTML (default) ?>
<p><?php repeaterkit_the_sub_field( 'description', 'html' ); ?></p>
<?php // Escaping inside an HTML attribute ?>
<input type="text" value="<?php repeaterkit_the_sub_field( 'default_text', 'attr' ); ?>" />
<?php // Escaping as a clean URL ?>
<a href="<?php repeaterkit_the_sub_field( 'website_url', 'url' ); ?>">Visit Website</a>
<?php // Escaping rich WYSIWYG markup (wp_kses_post) ?>
<div class="rich-content"><?php repeaterkit_the_sub_field( 'long_bio', 'wysiwyg' ); ?></div>
<?php if ( repeaterkit_have_rows( 'features' ) ) : ?>
<p>Total Features: <?php echo esc_html( repeaterkit_get_row_count( 'features' ) ); ?></p>
<ul>
<?php while ( repeaterkit_have_rows( 'features' ) ) : repeaterkit_the_row(); ?>
<li>
<strong>#<?php echo esc_html( repeaterkit_get_row_index() ); ?>:</strong>
<?php repeaterkit_the_sub_field( 'feature_name' ); ?>
</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
get_field() Direct AccessIf you prefer working with raw arrays or passing data to REST APIs, JavaScript applications, or block themes:
<?php
$rows = get_field( 'pricing_packages' );
if ( ! empty( $rows ) && is_array( $rows ) ) {
foreach ( $rows as $row ) {
echo '<div class="package">';
echo '<h3>' . esc_html( $row['package_name'] ?? '' ) . '</h3>';
echo '<p>Price: $' . esc_html( $row['price'] ?? 0 ) . '</p>';
echo '</div>';
}
}
?>
RepeaterKit includes built-in per-field JSON export and import:
* Export: Click the Export JSON button in the repeater controls to instantly copy the field’s complete row structure and data to your clipboard.
* Import: Click Import JSON, paste your JSON payload, and RepeaterKit validates the schema, verifies nonces and user capabilities, sanitizes all inputs, and regenerates your rows cleanly.
RepeaterKit is an independent open-source plugin. It is not affiliated with, sponsored by, endorsed by, or in any way associated with Advanced Custom Fields (ACF), WP Engine, or WordPress.org. “ACF” and “Advanced Custom Fields” are registered trademarks of their respective owners.