{"id":235638,"date":"2025-05-31T16:01:24","date_gmt":"2025-05-31T16:01:24","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/dynamic-acf-repeater-widget-for-elementor-loops-and-templates\/"},"modified":"2026-02-24T18:21:10","modified_gmt":"2026-02-24T18:21:10","slug":"repeater2template-for-acf-repeater-and-elementor","status":"publish","type":"plugin","link":"https:\/\/haz.wordpress.org\/plugins\/repeater2template-for-acf-repeater-and-elementor\/","author":23299455,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.5","stable_tag":"1.0.5","tested":"6.9.4","requires":"5.5","requires_php":"7.2","requires_plugins":null,"header_name":"Repeater2Template Widget for ACF Repeater and Elementor","header_author":"SlickWebDeveloper","header_description":"A custom  widget for Elementor to easily render ACF Repeater field data inside Elementor Loop Grids and Templates with Repeater subfield dynamic tag support.","assets_banners_color":"c3badf","last_updated":"2026-02-24 18:21:10","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":5,"author_block_rating":0,"active_installs":80,"downloads":1088,"num_ratings":6,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"slickwebdeveloper","date":"2025-05-31 16:00:40"},"1.0.1":{"tag":"1.0.1","author":"slickwebdeveloper","date":"2025-09-01 13:11:23"},"1.0.2":{"tag":"1.0.2","author":"slickwebdeveloper","date":"2025-09-19 18:40:34"},"1.0.3":{"tag":"1.0.3","author":"slickwebdeveloper","date":"2025-10-04 16:26:55"},"1.0.4":{"tag":"1.0.4","author":"slickwebdeveloper","date":"2025-11-01 16:13:56"},"1.0.5":{"tag":"1.0.5","author":"slickwebdeveloper","date":"2026-02-24 18:21:10"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3353871,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3353871,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3353949,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3364717,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3372904,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3372904,"resolution":"3","location":"assets","locale":""}},"screenshots":{"1":"Widget settings panel in Elementor.","2":"Example: ACF Repeater source with mapped subfields.","3":"Example: JSON Array and JSON URL usage."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2211,76538,2244,975,162],"plugin_category":[43,59],"plugin_contributors":[243200],"plugin_business_model":[],"class_list":["post-235638","plugin","type-plugin","status-publish","hentry","plugin_tags-acf","plugin_tags-elementor","plugin_tags-repeater","plugin_tags-template","plugin_tags-widget","plugin_category-customization","plugin_category-utilities-and-tools","plugin_contributors-slickwebdeveloper","plugin_committers-slickwebdeveloper"],"banners":{"banner":"https:\/\/ps.w.org\/repeater2template-for-acf-repeater-and-elementor\/assets\/banner-772x250.png?rev=3353949","banner_2x":"https:\/\/ps.w.org\/repeater2template-for-acf-repeater-and-elementor\/assets\/banner-1544x500.png?rev=3353871","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/repeater2template-for-acf-repeater-and-elementor\/assets\/icon-256x256.png?rev=3353871","icon_2x":"https:\/\/ps.w.org\/repeater2template-for-acf-repeater-and-elementor\/assets\/icon-256x256.png?rev=3353871","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/repeater2template-for-acf-repeater-and-elementor\/assets\/screenshot-1.png?rev=3364717","caption":"Widget settings panel in Elementor."},{"src":"https:\/\/ps.w.org\/repeater2template-for-acf-repeater-and-elementor\/assets\/screenshot-2.png?rev=3372904","caption":"Example: ACF Repeater source with mapped subfields."},{"src":"https:\/\/ps.w.org\/repeater2template-for-acf-repeater-and-elementor\/assets\/screenshot-3.png?rev=3372904","caption":"Example: JSON Array and JSON URL usage."}],"raw_content":"<!--section=description-->\n<p>\u26a0\ufe0f <strong>Requires Elementor Pro<\/strong><\/p>\n\n<p>The simplest plugin to render ACF Repeater field data or JSON data (from an array or URL) inside Elementor Loop Grids &amp; Templates.<\/p>\n\n<p>\ud83c\udfa5 <strong>Demo Videos:<\/strong><\/p>\n\n<p>https:\/\/youtu.be\/CCmqQ6F3_sE<\/p>\n\n<p>https:\/\/www.youtube.com\/watch?v=iHULh_O-Hsk<\/p>\n\n<p>This plugin enables you to loop through ACF Repeater fields, a local JSON array, or even a remote JSON response (via URL) \u2014 and render each row using an Elementor Template.<\/p>\n\n<p>It gives you full control over how the data is displayed and supports subfield-to-dynamic-tag mapping \u2014 so your Elementor templates stay dynamic, flexible, and clean.<\/p>\n\n<h4>\ud83d\udca1 Key Features<\/h4>\n\n<ul>\n<li>Select any ACF Pro Repeater field or provide a JSON array \/ JSON URL as a data source.<\/li>\n<li>Choose an Elementor Pro template to render each row.<\/li>\n<li>Define subfield-to-dynamic-tag mappings for flexible display.<\/li>\n<li>Supports text, image, URL, and media fields.<\/li>\n<li>Fetch JSON dynamically from any API or custom endpoint with parameters.<\/li>\n<li>100% no-code setup \u2014 fully Elementor-native experience.<\/li>\n<\/ul>\n\n<h4>\ud83d\udd01 Flexible Data Sources for Repeater Fields<\/h4>\n\n<p>In many real-world projects, repeater fields aren't always tied to the current post. You might have:<\/p>\n\n<ul>\n<li>A <strong>Global Options Page<\/strong> (like \"Site Settings\" or \"Theme Settings\") with repeatable content shared site-wide.<\/li>\n<li>A <strong>Specific Post\/Page<\/strong> that acts as a \"data hub\" reused across multiple templates.<\/li>\n<li>The default <strong>Current Post<\/strong> source for page-specific content.<\/li>\n<\/ul>\n\n<p>This plugin supports all three inside Elementor:<\/p>\n\n<ul>\n<li><strong>Current Post<\/strong> \u2192 Fetches repeater data from the current post\/page.<\/li>\n<li><strong>Specific Post (by ID)<\/strong> \u2192 Pulls repeater data from any post type \u2014 ideal for master content reuse.<\/li>\n<li><strong>Options Page<\/strong> \u2192 Fetches repeater data from any registered ACF Options Page (like global footers, menus, banners, or team sections).<\/li>\n<\/ul>\n\n<p>This feature lets you centralize repeater content and reuse it across templates without duplication.<\/p>\n\n<h4>\ud83c\udf10 JSON Array &amp; JSON URL Support<\/h4>\n\n<p>Not using ACF? No problem.\nYou can display dynamic JSON data instead \u2014 perfect for API-driven content or structured data from external sources.<\/p>\n\n<p><strong>\ud83e\uddf1 Two JSON Data Modes:<\/strong><\/p>\n\n<ol>\n<li><p><strong>JSON Array<\/strong> \u2014 Paste your JSON array directly inside the widget settings.<\/p>\n\n<p>[\n  { \"title\": \"Book A\", \"author\": \"Author X\", \"image\": \"https:\/\/example.com\/book1.jpg\" },\n  { \"title\": \"Book B\", \"author\": \"Author Y\", \"image\": \"https:\/\/example.com\/book2.jpg\" }\n]<\/p><\/li>\n<li><p><strong>JSON URL (New in v1.0.3)<\/strong> \u2014 Fetch data dynamically from any endpoint or API URL.<\/p><\/li>\n<\/ol>\n\n<ul>\n<li>The URL can include dynamic parameters (like post ID, category, or user meta).<\/li>\n<li>Ideal for remote product feeds, API-based testimonials, blog lists, or user data.<\/li>\n<li>The plugin automatically parses the JSON response and renders each object as a loop item using your chosen Elementor template.<\/li>\n<\/ul>\n\n<p><strong>Example:<\/strong><\/p>\n\n<pre><code>https:\/\/api.example.com\/books?category=fiction&amp;user_id={{user_id}}\n<\/code><\/pre>\n\n<p>Use dynamic tags to inject values into the URL, making your data source truly dynamic.<\/p>\n\n<h3>How It Works<\/h3>\n\n<h4>Step 1: Create a Template for Each Item<\/h4>\n\n<ol>\n<li>Go to <strong>Templates \u2192 Saved Templates \u2192 Add New<\/strong>.<\/li>\n<li>Choose <strong>Section<\/strong> or <strong>Container<\/strong> type.<\/li>\n<li>Design how a single repeater item should look (e.g., team card, testimonial block, etc.).<\/li>\n<li>Save the template.<\/li>\n<\/ol>\n\n<h4>Step 2: Add the Repeater2Template Widget<\/h4>\n\n<ol>\n<li>Edit the page with <strong>Elementor<\/strong>.<\/li>\n<li>Search for <strong>Repeater2Template<\/strong> widget and drop it on your page.<\/li>\n<li>Choose the <strong>data source<\/strong>:\n\n<ul>\n<li><code>ACF Repeater<\/code> \u2013 Select your field key or name.<\/li>\n<li><code>JSON URL \/ Array<\/code> \u2013 Paste JSON directly or provide a URL.<\/li>\n<\/ul><\/li>\n<\/ol>\n\n<h4>Step 3: Choose Template<\/h4>\n\n<ul>\n<li>Select the <strong>Elementor template<\/strong> created in Step 1.<\/li>\n<li>The widget will automatically loop through all repeater or JSON items and render each using that template.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/<\/code> or install via the WordPress Admin Panel.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Ensure Elementor Pro and ACF Pro are installed if using ACF.<\/li>\n<li>Create your ACF Repeater field or prepare JSON\/URL data.<\/li>\n<li>Create an Elementor Pro Saved Template for rendering.<\/li>\n<li>Add the Repeater2Template Widget to your layout and choose:\n\n<ul>\n<li>ACF Repeater<\/li>\n<li>Specific Post \/ Options Page<\/li>\n<li>JSON Array<\/li>\n<li>JSON from URL<\/li>\n<\/ul><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20require%20acf%20pro%3F\"><h3>Does it require ACF Pro?<\/h3><\/dt>\n<dd><p>Only if you're using repeater fields. JSON and JSON URL sources work without ACF.<\/p><\/dd>\n<dt id=\"can%20it%20fetch%20live%20data%20from%20apis%3F\"><h3>Can it fetch live data from APIs?<\/h3><\/dt>\n<dd><p>Yes! Use the JSON URL option to fetch and render data from any external or internal API endpoint.<\/p><\/dd>\n<dt id=\"does%20it%20cache%20data%20from%20the%20url%3F\"><h3>Does it cache data from the URL?<\/h3><\/dt>\n<dd><p>Currently, data is fetched fresh on every render. Future versions may include caching options.<\/p><\/dd>\n<dt id=\"can%20i%20use%20elementor%20free%3F\"><h3>Can I use Elementor Free?<\/h3><\/dt>\n<dd><p>No. Elementor Pro is required for dynamic tag and template integration.<\/p><\/dd>\n<dt id=\"what%20data%20types%20are%20supported%3F\"><h3>What data types are supported?<\/h3><\/dt>\n<dd><p>Text, images, URLs, media fields \u2014 plus automatic <code>&lt;img&gt;<\/code> tag handling for image URLs.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Added: Control to limit the number of rows displayed from ACF Repeater or JSON data.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Added support for JSON from URL \u2014 fetch data dynamically from APIs or custom endpoints with optional dynamic parameters.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added flexible ACF repeater data sources (Current Post, Specific Post, Options Page).<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added JSON Array as a data source.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release with full loop\/template support for ACF Repeater.<\/li>\n<\/ul>","raw_excerpt":"The simplest plugin to render ACF Repeater field data or JSON data (from an array or URL) inside Elementor Loop Grids &amp; Templates.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/235638","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=235638"}],"author":[{"embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/slickwebdeveloper"}],"wp:attachment":[{"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=235638"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=235638"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=235638"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=235638"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=235638"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=235638"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}