{"id":348079,"date":"2026-08-11T19:41:48","date_gmt":"2026-08-11T19:41:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/repeater-field-for-acf\/"},"modified":"2026-08-12T07:52:19","modified_gmt":"2026-08-12T07:52:19","slug":"raeen-repeater-field-for-acf","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/raeen-repeater-field-for-acf\/","author":16373858,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.0.3","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Raeen Repeater Field for ACF","header_author":"Mohammad Zubair Ali","header_description":"Adds a fully functional Repeater field type to the free version of Advanced Custom Fields. Supports table\/block\/row layouts, drag-and-drop sorting, nested repeaters, and full ACF JSON sync.","assets_banners_color":"e7e8ec","last_updated":"2026-08-12 07:52:19","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/raeenzubair\/repeater-field-for-acf","header_author_uri":"https:\/\/github.com\/raeenzubair","rating":5,"author_block_rating":0,"active_installs":0,"downloads":50,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"moha12351","date":"2026-08-11 19:41:21"},"1.0.2":{"tag":"1.0.2","author":"moha12351","date":"2026-08-12 07:52:19"}},"upgrade_notice":{"1.0.0":"<p>Initial release. Requires Advanced Custom Fields (free) 5.8+ and PHP 7.4+.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3643114,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-128x128.png":{"filename":"icon-128x128.png","revision":3643114,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3643114,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3643114,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3642999,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3642999,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1","1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3642450,"resolution":"1","location":"assets","locale":"","width":1024,"height":571},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3642450,"resolution":"2","location":"assets","locale":"","width":2752,"height":1536},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3642450,"resolution":"3","location":"assets","locale":"","width":1024,"height":1024},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3642450,"resolution":"4","location":"assets","locale":"","width":1024,"height":1024},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3642450,"resolution":"5","location":"assets","locale":"","width":1024,"height":1024}},"screenshots":{"1":"Field Group editor showing Repeater field configuration with sub-fields","2":"Table Layout mode \u2014 data displayed in a clean tabular format with drag handles","3":"Block Layout mode \u2014 collapsible card-style rows with rich field support","4":"Row Layout mode \u2014 stacked vertical rows with full-width fields","5":"Drag &amp; Drop reordering \u2014 intuitive row sorting in action"}},"plugin_section":[],"plugin_tags":[2211,2217,2010,2238,2244],"plugin_category":[59],"plugin_contributors":[216141],"plugin_business_model":[],"class_list":["post-348079","plugin","type-plugin","status-publish","hentry","plugin_tags-acf","plugin_tags-advanced-custom-fields","plugin_tags-custom-fields","plugin_tags-flexible-content","plugin_tags-repeater","plugin_category-utilities-and-tools","plugin_contributors-moha12351","plugin_committers-moha12351"],"banners":{"banner":"https:\/\/ps.w.org\/raeen-repeater-field-for-acf\/assets\/banner-772x250.png?rev=3642999","banner_2x":"https:\/\/ps.w.org\/raeen-repeater-field-for-acf\/assets\/banner-1544x500.png?rev=3642999","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/raeen-repeater-field-for-acf\/assets\/icon-128x128.png?rev=3643114","icon_2x":"https:\/\/ps.w.org\/raeen-repeater-field-for-acf\/assets\/icon-256x256.png?rev=3643114","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/raeen-repeater-field-for-acf\/assets\/screenshot-1.png?rev=3642450","caption":"Field Group editor showing Repeater field configuration with sub-fields"},{"src":"https:\/\/ps.w.org\/raeen-repeater-field-for-acf\/assets\/screenshot-2.png?rev=3642450","caption":"Table Layout mode \u2014 data displayed in a clean tabular format with drag handles"},{"src":"https:\/\/ps.w.org\/raeen-repeater-field-for-acf\/assets\/screenshot-3.png?rev=3642450","caption":"Block Layout mode \u2014 collapsible card-style rows with rich field support"},{"src":"https:\/\/ps.w.org\/raeen-repeater-field-for-acf\/assets\/screenshot-4.png?rev=3642450","caption":"Row Layout mode \u2014 stacked vertical rows with full-width fields"},{"src":"https:\/\/ps.w.org\/raeen-repeater-field-for-acf\/assets\/screenshot-5.png?rev=3642450","caption":"Drag &amp; Drop reordering \u2014 intuitive row sorting in action"}],"raw_content":"<!--section=description-->\n<p>Raeen Repeater Field for ACF adds a native-feeling Repeater field type to the <strong>free<\/strong> version of Advanced Custom Fields (ACF). It stores data in the same flat postmeta format used by ACF Pro, so all standard template functions work out of the box.<\/p>\n\n<p><strong>Key Features:<\/strong><\/p>\n\n<ul>\n<li><strong>Three Layout Modes<\/strong>: Table, Block (card), and Row (stacked) layouts<\/li>\n<li><strong>Drag &amp; Drop Reordering<\/strong>: Intuitive row sorting powered by jQuery UI Sortable<\/li>\n<li><strong>Row Operations<\/strong>: Add, remove, duplicate rows<\/li>\n<li><strong>All ACF Free field types<\/strong>: Text, Textarea, Number, Email, URL, Image, File, WYSIWYG, Select, Radio, Checkbox, True\/False, Date Picker, Color Picker, Link, and more<\/li>\n<li><strong>Nested Repeaters<\/strong>: Repeater fields can contain other repeater fields<\/li>\n<li><strong>get_field() compatible<\/strong>: Uses ACF Pro-compatible flat meta storage \u2014 <code>get_field()<\/code>, <code>have_rows()<\/code>, <code>the_row()<\/code>, and <code>get_sub_field()<\/code> all work natively<\/li>\n<li><strong>ACF JSON Sync<\/strong>: Full compatibility with ACF's field group JSON export\/import<\/li>\n<li><strong>REST API Support<\/strong>: Exposes repeater data through the WordPress REST API<\/li>\n<li><strong>Gutenberg &amp; Classic Editor<\/strong>: Works in both editors<\/li>\n<li><strong>Multisite Compatible<\/strong>: Network activatable<\/li>\n<li><strong>Internationalization Ready<\/strong>: Full translation support (text domain: <code>repeater-field-for-acf<\/code>)<\/li>\n<li><strong>Accessibility Ready<\/strong>: Proper ARIA labels and keyboard support<\/li>\n<\/ul>\n\n<p><strong>Data Storage (ACF Pro-compatible):<\/strong><\/p>\n\n<p>Data is stored using ACF Pro's flat postmeta format:<\/p>\n\n<ul>\n<li><code>{field_name}<\/code> \u2192 row count (integer)<\/li>\n<li><code>{field_name}_{i}_{sub_field_name}<\/code> \u2192 sub-field value for row <code>i<\/code><\/li>\n<li><code>_{field_name}_{i}_{sub_field_name}<\/code> \u2192 sub-field key reference<\/li>\n<\/ul>\n\n<p>This means all ACF template functions work without modification:<\/p>\n\n<pre><code>$rows = get_field( 'my_repeater' );\nif ( have_rows( 'my_repeater' ) ) {\n    while ( have_rows( 'my_repeater' ) ) {\n        the_row();\n        $name = get_sub_field( 'name' );\n    }\n}\n<\/code><\/pre>\n\n<h3>Source Code &amp; Development<\/h3>\n\n<p>This plugin is developed in the open. The complete source code and build tooling are available at:<\/p>\n\n<ul>\n<li>GitHub repository: https:\/\/github.com\/raeenzubair\/raeen-repeater-field-for-acf<\/li>\n<\/ul>\n\n<p>The unminified JavaScript and CSS sources used to generate the compiled assets under <code>assets\/dist\/<\/code> are bundled in the plugin under <code>src\/<\/code>. To rebuild the compiled assets from source:<\/p>\n\n<pre><code>npm install\nnpm run build\n<\/code><\/pre>\n\n<p>Run the test suite and code quality checks with:<\/p>\n\n<pre><code>npm test            # JavaScript unit tests\ncomposer test       # PHP unit tests\ncomposer phpcs      # PHP coding standards\ncomposer phpstan    # PHP static analysis\n<\/code><\/pre>\n\n<!--section=installation-->\n<ol>\n<li>Make sure <strong>Advanced Custom Fields<\/strong> (free, version 5.8+) is installed and activated.<\/li>\n<li>Upload the <code>raeen-repeater-field-for-acf<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Custom Fields \u2192 Field Groups<\/strong>, edit a field group, and add a new <strong>Repeater<\/strong> field (under the Layout category).<\/li>\n<li>Add sub-fields to the repeater and save.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20require%20acf%20pro%3F\"><h3>Does this require ACF Pro?<\/h3><\/dt>\n<dd><p>No. This plugin works exclusively with the <strong>free<\/strong> version of Advanced Custom Fields (5.8+). If ACF Pro is active, this plugin automatically defers to Pro's built-in repeater.<\/p><\/dd>\n<dt id=\"will%20it%20conflict%20with%20acf%20pro%3F\"><h3>Will it conflict with ACF Pro?<\/h3><\/dt>\n<dd><p>No. If ACF Pro is detected (<code>ACF_PRO<\/code> constant is defined), the plugin disables itself and lets Pro handle the repeater field natively.<\/p><\/dd>\n<dt id=\"can%20i%20nest%20repeaters%3F\"><h3>Can I nest repeaters?<\/h3><\/dt>\n<dd><p>Yes. Repeater fields can contain other repeater fields as sub-fields, with full drag-and-drop and all row operations.<\/p><\/dd>\n<dt id=\"does%20get_field%28%29%20work%3F\"><h3>Does get_field() work?<\/h3><\/dt>\n<dd><p>Yes. Data is stored in the same flat postmeta format as ACF Pro, so <code>get_field()<\/code>, <code>have_rows()<\/code>, <code>the_row()<\/code>, and <code>get_sub_field()<\/code> all work without any code changes.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20acf%20json%20sync%3F\"><h3>Is it compatible with ACF JSON sync?<\/h3><\/dt>\n<dd><p>Yes. Full support for ACF's field group JSON export, import, and auto-sync.<\/p><\/dd>\n<dt id=\"what%20wysiwyg%20%2F%20rich%20field%20support%20is%20there%3F\"><h3>What WYSIWYG \/ rich field support is there?<\/h3><\/dt>\n<dd><p>The plugin automatically detects rich field types (WYSIWYG, Gallery, etc.) and switches to the stacked Row layout to prevent display issues. TinyMCE editors are properly initialized, duplicated, and cleaned up when rows are added, duplicated, or removed.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fix: Resolved fatal autoloader exception by explicitly loading built-in PSR-4 autoloader.<\/li>\n<li>Fix: Resolved duplicate field registration causing repeater field to render multiple times on edit screens.<\/li>\n<li>Fix: Resolved nested repeater add-row functionality by scoping clone template lookups and index replacements to parent repeaters.<\/li>\n<li>Fix: Resolved drag handle UI overlap with row numbers by increasing left column width.<\/li>\n<li>Enhancement: Enqueued frontend stylesheet for full acf_form() compatibility.<\/li>\n<li>Enhancement: Updated WordPress.org branding assets with animated GIF logo.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Enhancement: Updated plugin display name to \"Raeen Repeater Field for ACF\" and text domain to repeater-field-for-acf to match WordPress.org plugin slug.<\/li>\n<li>Enhancement: Refactored code namespaces to Raeen_Repeater to prevent conflicts.<\/li>\n<li>Security: Hardened AJAX input handling and added strict nonce verification.<\/li>\n<li>Documentation: Documented open source repository and build instructions in readme.txt.<\/li>\n<li>Enhancement: Added full branding assets including logo, banner, screenshots, and GIF demo.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Feature: Initial release of Repeater field for free Advanced Custom Fields (ACF 5.8+).<\/li>\n<li>Feature: Added three layout modes: Table, Block (card), and Row (stacked).<\/li>\n<li>Feature: Added drag-and-drop row sorting powered by jQuery UI Sortable.<\/li>\n<li>Feature: Added row operations (add, remove, duplicate, collapse\/expand).<\/li>\n<li>Feature: Added WYSIWYG \/ TinyMCE editor support with automatic lifecycle management.<\/li>\n<li>Feature: ACF Pro-compatible flat meta storage (get_field, have_rows, the_row, get_sub_field).<\/li>\n<li>Feature: Added REST API endpoint integration.<\/li>\n<li>Feature: Added ACF JSON\/PHP export and auto-sync support.<\/li>\n<li>Feature: Added nested repeater support and multisite compatibility.<\/li>\n<\/ul>","raw_excerpt":"Adds a native-feeling Repeater field to the free version of Advanced Custom Fields. No ACF Pro required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/348079","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=348079"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/moha12351"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=348079"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=348079"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=348079"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=348079"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=348079"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=348079"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}