{"id":339066,"date":"2026-07-12T20:39:48","date_gmt":"2026-07-12T20:39:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/repeater-tags-for-elementor-acf\/"},"modified":"2026-07-12T20:39:27","modified_gmt":"2026-07-12T20:39:27","slug":"repeater-tags-for-elementor-acf","status":"publish","type":"plugin","link":"https:\/\/twd.wordpress.org\/plugins\/repeater-tags-for-elementor-acf\/","author":23271239,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.2","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Arts Repeater Tags for Elementor and ACF","header_author":"Artem Semkin","header_description":"ACF repeater sub-fields as native Elementor dynamic tags with direct row addressing \u2014 no loops, no templates.","assets_banners_color":"17191c","last_updated":"2026-07-12 20:39:27","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/buymeacoffee.com\/artemsemkin","header_plugin_uri":"https:\/\/artemsemkin.com\/plugins\/repeater-tags-for-elementor-acf\/","header_author_uri":"https:\/\/artemsemkin.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":59,"num_ratings":0,"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":"artemsemkin","date":"2026-07-12 20:39:27"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3605185,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3605185,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3605185,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3605185,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3605185,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3611284,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/wp-admin\\\/post.php?post=9901&action=elementor\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"phpExtensionBundles\":[\"kitchen-sink\"],\"features\":{\"networking\":true},\"login\":true,\"steps\":[{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"elementor\"},\"options\":{\"activate\":true}},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"secure-custom-fields\"},\"options\":{\"activate\":true}},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"repeater-tags-for-elementor-acf\"},\"options\":{\"activate\":true}},{\"step\":\"installTheme\",\"themeData\":{\"resource\":\"wordpress.org\\\/themes\",\"slug\":\"hello-elementor\"},\"options\":{\"activate\":true}},{\"step\":\"mkdir\",\"path\":\"\\\/wordpress\\\/wp-content\\\/mu-plugins\\\/assets\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/mu-plugins\\\/rt-demo-seed.php\",\"data\":\"<?php\\n\\\/**\\n * Plugin Name: Repeater Tags \\u2014 Playground Demo Seed\\n * Description: Seeds the wp.org Live Preview demo. Inlined into blueprint.json by\\n *              dev\\\/blueprint\\\/build-blueprint.js \\u2014 never shipped in the plugin ZIP.\\n *\\n * Self-contained on purpose: it registers its OWN field groups (field_rtb_* \\u2014 distinct from\\n * dev\\\/mu-plugins\\\/rt-demo-fixtures.php's field_rt_*) so the two can coexist on the dev site and\\n * neither drifts from the other. Images are drawn with GD rather than sideloaded \\u2014 Playground\\n * has no reliable outbound network for media.\\n *\\n * @package Arts\\\\RepeaterTags\\n *\\\/\\n\\nif ( ! defined( 'ABSPATH' ) ) {\\n\\texit;\\n}\\n\\n\\\/**\\n * Pinned so the blueprint's landingPage can address the page without guessing. The generator\\n * reads this constant \\u2014 keep the literal on one line.\\n *\\\/\\ndefine( 'RTB_DEMO_PAGE_ID', 9901 );\\n\\n\\\/\\\/ Elementor otherwise hijacks the first admin request with its onboarding wizard, which would\\n\\\/\\\/ land the visitor somewhere other than the editor.\\nadd_action(\\n\\t'admin_init',\\n\\tfunction () {\\n\\t\\tupdate_option( 'elementor_onboarded', true );\\n\\t\\tdelete_transient( 'elementor_activation_redirect' );\\n\\t},\\n\\t1\\n);\\n\\nadd_action(\\n\\t'acf\\\/init',\\n\\tfunction () {\\n\\t\\tif ( function_exists( 'acf_add_options_page' ) ) {\\n\\t\\t\\tacf_add_options_page(\\n\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t'page_title' => 'Demo Site Settings',\\n\\t\\t\\t\\t\\t'menu_title' => 'Demo Site Settings',\\n\\t\\t\\t\\t\\t'menu_slug'  => 'rt-demo-options',\\n\\t\\t\\t\\t)\\n\\t\\t\\t);\\n\\t\\t}\\n\\t}\\n);\\n\\nadd_action(\\n\\t'acf\\\/include_fields',\\n\\tfunction () {\\n\\t\\tif ( ! function_exists( 'acf_add_local_field_group' ) ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\tacf_add_local_field_group(\\n\\t\\t\\tarray(\\n\\t\\t\\t\\t'key'      => 'group_rtb_page',\\n\\t\\t\\t\\t'title'    => 'Showcase (Demo)',\\n\\t\\t\\t\\t'fields'   => array(\\n\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t'key'        => 'field_rtb_showcase',\\n\\t\\t\\t\\t\\t\\t'label'      => 'Showcase Items',\\n\\t\\t\\t\\t\\t\\t'name'       => 'showcase_items',\\n\\t\\t\\t\\t\\t\\t'type'       => 'repeater',\\n\\t\\t\\t\\t\\t\\t'layout'     => 'row',\\n\\t\\t\\t\\t\\t\\t'collapsed'  => 'field_rtb_si_name',\\n\\t\\t\\t\\t\\t\\t'sub_fields' => array(\\n\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t'key'           => 'field_rtb_si_image',\\n\\t\\t\\t\\t\\t\\t\\t\\t'label'         => 'Image',\\n\\t\\t\\t\\t\\t\\t\\t\\t'name'          => 'image',\\n\\t\\t\\t\\t\\t\\t\\t\\t'type'          => 'image',\\n\\t\\t\\t\\t\\t\\t\\t\\t'return_format' => 'array',\\n\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t'key'   => 'field_rtb_si_name',\\n\\t\\t\\t\\t\\t\\t\\t\\t'label' => 'Name',\\n\\t\\t\\t\\t\\t\\t\\t\\t'name'  => 'name',\\n\\t\\t\\t\\t\\t\\t\\t\\t'type'  => 'text',\\n\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t'key'   => 'field_rtb_si_tagline',\\n\\t\\t\\t\\t\\t\\t\\t\\t'label' => 'Tagline',\\n\\t\\t\\t\\t\\t\\t\\t\\t'name'  => 'tagline',\\n\\t\\t\\t\\t\\t\\t\\t\\t'type'  => 'textarea',\\n\\t\\t\\t\\t\\t\\t\\t\\t'rows'  => 2,\\n\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t'key'   => 'field_rtb_si_price',\\n\\t\\t\\t\\t\\t\\t\\t\\t'label' => 'Price',\\n\\t\\t\\t\\t\\t\\t\\t\\t'name'  => 'price',\\n\\t\\t\\t\\t\\t\\t\\t\\t'type'  => 'number',\\n\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t'key'   => 'field_rtb_si_accent',\\n\\t\\t\\t\\t\\t\\t\\t\\t'label' => 'Accent',\\n\\t\\t\\t\\t\\t\\t\\t\\t'name'  => 'accent',\\n\\t\\t\\t\\t\\t\\t\\t\\t'type'  => 'color_picker',\\n\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t'key'           => 'field_rtb_si_gallery',\\n\\t\\t\\t\\t\\t\\t\\t\\t'label'         => 'Gallery',\\n\\t\\t\\t\\t\\t\\t\\t\\t'name'          => 'gallery',\\n\\t\\t\\t\\t\\t\\t\\t\\t'type'          => 'gallery',\\n\\t\\t\\t\\t\\t\\t\\t\\t'return_format' => 'array',\\n\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t'key'           => 'field_rtb_si_link',\\n\\t\\t\\t\\t\\t\\t\\t\\t'label'         => 'Link',\\n\\t\\t\\t\\t\\t\\t\\t\\t'name'          => 'link',\\n\\t\\t\\t\\t\\t\\t\\t\\t'type'          => 'link',\\n\\t\\t\\t\\t\\t\\t\\t\\t'return_format' => 'array',\\n\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t'key'        => 'field_rtb_si_meta',\\n\\t\\t\\t\\t\\t\\t\\t\\t'label'      => 'Meta',\\n\\t\\t\\t\\t\\t\\t\\t\\t'name'       => 'meta',\\n\\t\\t\\t\\t\\t\\t\\t\\t'type'       => 'group',\\n\\t\\t\\t\\t\\t\\t\\t\\t'layout'     => 'block',\\n\\t\\t\\t\\t\\t\\t\\t\\t'sub_fields' => array(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'key'   => 'field_rtb_si_meta_material',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'label' => 'Material',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'name'  => 'material',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'type'  => 'text',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t'key'        => 'field_rtb_si_specs',\\n\\t\\t\\t\\t\\t\\t\\t\\t'label'      => 'Specs',\\n\\t\\t\\t\\t\\t\\t\\t\\t'name'       => 'specs',\\n\\t\\t\\t\\t\\t\\t\\t\\t'type'       => 'repeater',\\n\\t\\t\\t\\t\\t\\t\\t\\t'layout'     => 'table',\\n\\t\\t\\t\\t\\t\\t\\t\\t'sub_fields' => array(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'key'   => 'field_rtb_spec_name',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'label' => 'Spec',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'name'  => 'spec_name',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'type'  => 'text',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'key'   => 'field_rtb_spec_value',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'label' => 'Value',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'name'  => 'spec_value',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'type'  => 'text',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t'key'     => 'field_rtb_sections',\\n\\t\\t\\t\\t\\t\\t'label'   => 'Page Sections',\\n\\t\\t\\t\\t\\t\\t'name'    => 'page_sections',\\n\\t\\t\\t\\t\\t\\t'type'    => 'flexible_content',\\n\\t\\t\\t\\t\\t\\t'layouts' => array(\\n\\t\\t\\t\\t\\t\\t\\t\\\/\\\/ Both layouts define `heading` (union-dedupe in the picker); only\\n\\t\\t\\t\\t\\t\\t\\t\\\/\\\/ testimonial defines `author` (layout-aware fail-closed).\\n\\t\\t\\t\\t\\t\\t\\t'layout_rtb_hero'        => array(\\n\\t\\t\\t\\t\\t\\t\\t\\t'key'        => 'layout_rtb_hero',\\n\\t\\t\\t\\t\\t\\t\\t\\t'name'       => 'hero',\\n\\t\\t\\t\\t\\t\\t\\t\\t'label'      => 'Hero',\\n\\t\\t\\t\\t\\t\\t\\t\\t'display'    => 'block',\\n\\t\\t\\t\\t\\t\\t\\t\\t'sub_fields' => array(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'key'   => 'field_rtb_hero_heading',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'label' => 'Heading',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'name'  => 'heading',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'type'  => 'text',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'key'           => 'field_rtb_hero_image',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'label'         => 'Image',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'name'          => 'image',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'type'          => 'image',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'return_format' => 'array',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\t'layout_rtb_testimonial' => array(\\n\\t\\t\\t\\t\\t\\t\\t\\t'key'        => 'layout_rtb_testimonial',\\n\\t\\t\\t\\t\\t\\t\\t\\t'name'       => 'testimonial',\\n\\t\\t\\t\\t\\t\\t\\t\\t'label'      => 'Testimonial',\\n\\t\\t\\t\\t\\t\\t\\t\\t'display'    => 'block',\\n\\t\\t\\t\\t\\t\\t\\t\\t'sub_fields' => array(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'key'   => 'field_rtb_testi_heading',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'label' => 'Heading',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'name'  => 'heading',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'type'  => 'text',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'key'   => 'field_rtb_testi_author',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'label' => 'Author',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'name'  => 'author',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'type'  => 'text',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t),\\n\\t\\t\\t\\t'location' => array(\\n\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t'param'    => 'post_type',\\n\\t\\t\\t\\t\\t\\t\\t'operator' => '==',\\n\\t\\t\\t\\t\\t\\t\\t'value'    => 'page',\\n\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t),\\n\\t\\t\\t)\\n\\t\\t);\\n\\n\\t\\tacf_add_local_field_group(\\n\\t\\t\\tarray(\\n\\t\\t\\t\\t'key'      => 'group_rtb_options',\\n\\t\\t\\t\\t'title'    => 'Site Notice (Demo)',\\n\\t\\t\\t\\t'fields'   => array(\\n\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t'key'        => 'field_rtb_notice',\\n\\t\\t\\t\\t\\t\\t'label'      => 'Site Notice',\\n\\t\\t\\t\\t\\t\\t'name'       => 'site_notice',\\n\\t\\t\\t\\t\\t\\t'type'       => 'repeater',\\n\\t\\t\\t\\t\\t\\t'layout'     => 'row',\\n\\t\\t\\t\\t\\t\\t'collapsed'  => 'field_rtb_notice_caption',\\n\\t\\t\\t\\t\\t\\t'sub_fields' => array(\\n\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t'key'   => 'field_rtb_notice_caption',\\n\\t\\t\\t\\t\\t\\t\\t\\t'label' => 'Caption',\\n\\t\\t\\t\\t\\t\\t\\t\\t'name'  => 'caption',\\n\\t\\t\\t\\t\\t\\t\\t\\t'type'  => 'text',\\n\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t\\t'key'   => 'field_rtb_notice_link',\\n\\t\\t\\t\\t\\t\\t\\t\\t'label' => 'Link',\\n\\t\\t\\t\\t\\t\\t\\t\\t'name'  => 'link',\\n\\t\\t\\t\\t\\t\\t\\t\\t'type'  => 'url',\\n\\t\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t),\\n\\t\\t\\t\\t'location' => array(\\n\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t'param'    => 'options_page',\\n\\t\\t\\t\\t\\t\\t\\t'operator' => '==',\\n\\t\\t\\t\\t\\t\\t\\t'value'    => 'rt-demo-options',\\n\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t),\\n\\t\\t\\t)\\n\\t\\t);\\n\\t}\\n);\\n\\n\\\/**\\n * Draws a label using GD's built-in bitmap font, scaled up.\\n *\\n * WordPress ships no usable TTF (dashicons.ttf is icon glyphs), so imagettftext() is out and\\n * font 5 alone is 8x15px \\u2014 illegible on a 1200x800 canvas. Rendering small then resampling up\\n * is the standard workaround: soft edges, but readable.\\n *\\\/\\nfunction rtb_draw_label( \\\\GdImage $im, string $label, int $center_x, int $center_y, int $scale ): void {\\n\\t$w = imagefontwidth( 5 ) * strlen( $label );\\n\\t$h = imagefontheight( 5 );\\n\\n\\t$layer = imagecreatetruecolor( $w, $h );\\n\\timagesavealpha( $layer, true );\\n\\timagefill( $layer, 0, 0, imagecolorallocatealpha( $layer, 0, 0, 0, 127 ) );\\n\\timagestring( $layer, 5, 0, 0, $label, imagecolorallocate( $layer, 255, 255, 255 ) );\\n\\n\\timagealphablending( $im, true );\\n\\timagecopyresampled(\\n\\t\\t$im,\\n\\t\\t$layer,\\n\\t\\t(int) ( $center_x - ( $w * $scale ) \\\/ 2 ),\\n\\t\\t(int) ( $center_y - ( $h * $scale ) \\\/ 2 ),\\n\\t\\t0,\\n\\t\\t0,\\n\\t\\t(int) ( $w * $scale ),\\n\\t\\t(int) ( $h * $scale ),\\n\\t\\t$w,\\n\\t\\t$h\\n\\t);\\n\\n\\timagedestroy( $layer );\\n}\\n\\n\\\/**\\n * Generates a gradient placeholder and returns a real attachment ID (0 on failure).\\n *\\n * @param array<int, int> $from RGB triplet, top of the gradient.\\n * @param array<int, int> $to   RGB triplet, bottom of the gradient.\\n *\\\/\\nfunction rtb_make_image( string $label, array $from, array $to, string $filename ): int {\\n\\t$w  = 1200;\\n\\t$h  = 800;\\n\\t$im = imagecreatetruecolor( $w, $h );\\n\\n\\tfor ( $y = 0; $y < $h; $y++ ) {\\n\\t\\t$t = $y \\\/ $h;\\n\\n\\t\\timageline(\\n\\t\\t\\t$im,\\n\\t\\t\\t0,\\n\\t\\t\\t$y,\\n\\t\\t\\t$w,\\n\\t\\t\\t$y,\\n\\t\\t\\timagecolorallocate(\\n\\t\\t\\t\\t$im,\\n\\t\\t\\t\\t(int) ( $from[0] + ( $to[0] - $from[0] ) * $t ),\\n\\t\\t\\t\\t(int) ( $from[1] + ( $to[1] - $from[1] ) * $t ),\\n\\t\\t\\t\\t(int) ( $from[2] + ( $to[2] - $from[2] ) * $t )\\n\\t\\t\\t)\\n\\t\\t);\\n\\t}\\n\\n\\timagealphablending( $im, true );\\n\\t$veil = imagecolorallocatealpha( $im, 255, 255, 255, 108 );\\n\\timagefilledellipse( $im, (int) ( $w * 0.82 ), (int) ( $h * 0.18 ), 340, 340, $veil );\\n\\timagefilledellipse( $im, (int) ( $w * 0.12 ), (int) ( $h * 0.88 ), 220, 220, $veil );\\n\\n\\trtb_draw_label( $im, $label, $w \\\/ 2, $h \\\/ 2, 7 );\\n\\n\\tob_start();\\n\\timagejpeg( $im, null, 88 );\\n\\t$bytes = ob_get_clean();\\n\\timagedestroy( $im );\\n\\n\\t$upload = wp_upload_bits( $filename, null, $bytes );\\n\\n\\tif ( ! empty( $upload['error'] ) ) {\\n\\t\\treturn 0;\\n\\t}\\n\\n\\t$attachment_id = wp_insert_attachment(\\n\\t\\tarray(\\n\\t\\t\\t'post_mime_type' => 'image\\\/jpeg',\\n\\t\\t\\t'post_title'     => $label,\\n\\t\\t\\t'post_status'    => 'inherit',\\n\\t\\t),\\n\\t\\t$upload['file']\\n\\t);\\n\\n\\tif ( is_wp_error( $attachment_id ) || ! $attachment_id ) {\\n\\t\\treturn 0;\\n\\t}\\n\\n\\trequire_once ABSPATH . 'wp-admin\\\/includes\\\/image.php';\\n\\twp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $upload['file'] ) );\\n\\n\\treturn (int) $attachment_id;\\n}\\n\\nadd_action(\\n\\t'admin_init',\\n\\tfunction () {\\n\\t\\tif ( ! function_exists( 'update_field' ) || get_option( 'rtb_demo_seeded' ) ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\tif ( ! extension_loaded( 'gd' ) ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t$palette = array(\\n\\t\\t\\t\\\/\\\/ Product shots say which row they belong to \\u2014 the row-addressing story, in pixels.\\n\\t\\t\\t'p1'    => array( 'Row 1', array( 30, 41, 59 ), array( 99, 102, 241 ) ),\\n\\t\\t\\t'p2'    => array( 'Row 2', array( 76, 29, 149 ), array( 236, 72, 153 ) ),\\n\\t\\t\\t'p3'    => array( 'Row 3', array( 4, 47, 46 ), array( 20, 184, 166 ) ),\\n\\t\\t\\t'g1'    => array( 'Gallery 1', array( 30, 58, 138 ), array( 56, 189, 248 ) ),\\n\\t\\t\\t'g2'    => array( 'Gallery 2', array( 88, 28, 135 ), array( 168, 85, 247 ) ),\\n\\t\\t\\t'g3'    => array( 'Gallery 3', array( 120, 53, 15 ), array( 251, 146, 60 ) ),\\n\\t\\t\\t'g4'    => array( 'Gallery 4', array( 19, 78, 74 ), array( 45, 212, 191 ) ),\\n\\t\\t\\t'g5'    => array( 'Gallery 5', array( 127, 29, 29 ), array( 248, 113, 113 ) ),\\n\\t\\t\\t'hero1' => array( 'Hero A', array( 12, 74, 110 ), array( 125, 211, 252 ) ),\\n\\t\\t\\t'hero2' => array( 'Hero B', array( 63, 63, 70 ), array( 161, 161, 170 ) ),\\n\\t\\t);\\n\\n\\t\\t$img = array();\\n\\n\\t\\tforeach ( $palette as $slug => $spec ) {\\n\\t\\t\\t$img[ $slug ] = rtb_make_image( $spec[0], $spec[1], $spec[2], 'rt-demo-' . $slug . '.jpg' );\\n\\t\\t}\\n\\n\\t\\t$admins = get_users(\\n\\t\\t\\tarray(\\n\\t\\t\\t\\t'role'   => 'administrator',\\n\\t\\t\\t\\t'number' => 1,\\n\\t\\t\\t\\t'fields' => 'ID',\\n\\t\\t\\t)\\n\\t\\t);\\n\\n\\t\\t$page_id = wp_insert_post(\\n\\t\\t\\tarray(\\n\\t\\t\\t\\t'import_id'   => RTB_DEMO_PAGE_ID,\\n\\t\\t\\t\\t'post_title'  => 'Repeater Tags Demo',\\n\\t\\t\\t\\t'post_name'   => 'repeater-tags-demo',\\n\\t\\t\\t\\t'post_type'   => 'page',\\n\\t\\t\\t\\t'post_status' => 'publish',\\n\\t\\t\\t\\t'post_author' => $admins ? (int) $admins[0] : 1,\\n\\t\\t\\t)\\n\\t\\t);\\n\\n\\t\\tif ( ! $page_id || is_wp_error( $page_id ) ) {\\n\\t\\t\\treturn;\\n\\t\\t}\\n\\n\\t\\t\\\/\\\/ Rows are written NAME-keyed: that's the shape update_field() expects when creating a\\n\\t\\t\\\/\\\/ value outright (raw\\\/KEY-keyed shapes are only needed to patch an existing row).\\n\\t\\tupdate_field(\\n\\t\\t\\t'field_rtb_showcase',\\n\\t\\t\\tarray(\\n\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t'image'   => $img['p1'],\\n\\t\\t\\t\\t\\t'name'    => 'Aurora Desk Lamp',\\n\\t\\t\\t\\t\\t'tagline' => 'Warm oak base, dimmable to candlelight.',\\n\\t\\t\\t\\t\\t'price'   => 148,\\n\\t\\t\\t\\t\\t'accent'  => '#6366f1',\\n\\t\\t\\t\\t\\t'gallery' => array( $img['g1'], $img['g2'], $img['g3'] ),\\n\\t\\t\\t\\t\\t'link'    => array(\\n\\t\\t\\t\\t\\t\\t'title'  => 'View product',\\n\\t\\t\\t\\t\\t\\t'url'    => 'https:\\\/\\\/example.com\\\/aurora-desk-lamp',\\n\\t\\t\\t\\t\\t\\t'target' => '',\\n\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t'meta'    => array( 'material' => 'Solid white oak' ),\\n\\t\\t\\t\\t\\t'specs'   => array(\\n\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t'spec_name'  => 'Weight',\\n\\t\\t\\t\\t\\t\\t\\t'spec_value' => '1.2 kg',\\n\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t'spec_name'  => 'Shade width',\\n\\t\\t\\t\\t\\t\\t\\t'spec_value' => '340 mm',\\n\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t'spec_name'  => 'Bulb',\\n\\t\\t\\t\\t\\t\\t\\t'spec_value' => 'E27 \\u00b7 6W LED',\\n\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t),\\n\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t'image'   => $img['p2'],\\n\\t\\t\\t\\t\\t'name'    => 'Canvas Weekender',\\n\\t\\t\\t\\t\\t'tagline' => 'Waxed cotton, leather trim, lifetime seams.',\\n\\t\\t\\t\\t\\t'price'   => 220,\\n\\t\\t\\t\\t\\t'accent'  => '#ec4899',\\n\\t\\t\\t\\t\\t'gallery' => array( $img['g3'], $img['g4'], $img['g5'] ),\\n\\t\\t\\t\\t\\t'link'    => array(\\n\\t\\t\\t\\t\\t\\t'title'  => 'View product',\\n\\t\\t\\t\\t\\t\\t'url'    => 'https:\\\/\\\/example.com\\\/canvas-weekender',\\n\\t\\t\\t\\t\\t\\t'target' => '',\\n\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t'meta'    => array( 'material' => 'Waxed cotton canvas' ),\\n\\t\\t\\t\\t\\t'specs'   => array(\\n\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t'spec_name'  => 'Capacity',\\n\\t\\t\\t\\t\\t\\t\\t'spec_value' => '42 L',\\n\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t\\t\\t'spec_name'  => 'Cabin legal',\\n\\t\\t\\t\\t\\t\\t\\t'spec_value' => 'Yes',\\n\\t\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t),\\n\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t'image'   => $img['p3'],\\n\\t\\t\\t\\t\\t'name'    => 'Kobo Pour-Over Set',\\n\\t\\t\\t\\t\\t'tagline' => 'Hand-thrown stoneware, one cup at a time.',\\n\\t\\t\\t\\t\\t'price'   => 64,\\n\\t\\t\\t\\t\\t'accent'  => '#14b8a6',\\n\\t\\t\\t\\t\\t'gallery' => array( $img['g5'], $img['g1'], $img['g2'] ),\\n\\t\\t\\t\\t\\t'link'    => array(\\n\\t\\t\\t\\t\\t\\t'title'  => 'View product',\\n\\t\\t\\t\\t\\t\\t'url'    => 'https:\\\/\\\/example.com\\\/kobo-pour-over',\\n\\t\\t\\t\\t\\t\\t'target' => '',\\n\\t\\t\\t\\t\\t),\\n\\t\\t\\t\\t\\t'meta'    => array( 'material' => 'Glazed stoneware' ),\\n\\t\\t\\t\\t\\t\\\/\\\/ Deliberately empty: the child-tier fail-closed demo binds against this row.\\n\\t\\t\\t\\t\\t'specs'   => array(),\\n\\t\\t\\t\\t),\\n\\t\\t\\t),\\n\\t\\t\\t$page_id\\n\\t\\t);\\n\\n\\t\\tupdate_field(\\n\\t\\t\\t'field_rtb_sections',\\n\\t\\t\\tarray(\\n\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t'acf_fc_layout' => 'hero',\\n\\t\\t\\t\\t\\t'heading'       => 'Built for the sites you already have',\\n\\t\\t\\t\\t\\t'image'         => $img['hero1'],\\n\\t\\t\\t\\t),\\n\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t'acf_fc_layout' => 'testimonial',\\n\\t\\t\\t\\t\\t'heading'       => 'It reads the repeater I already built.',\\n\\t\\t\\t\\t\\t'author'        => 'Every ACF developer, eventually',\\n\\t\\t\\t\\t),\\n\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t'acf_fc_layout' => 'hero',\\n\\t\\t\\t\\t\\t'heading'       => 'No custom widgets. No new data model.',\\n\\t\\t\\t\\t\\t'image'         => $img['hero2'],\\n\\t\\t\\t\\t),\\n\\t\\t\\t),\\n\\t\\t\\t$page_id\\n\\t\\t);\\n\\n\\t\\tupdate_field(\\n\\t\\t\\t'field_rtb_notice',\\n\\t\\t\\tarray(\\n\\t\\t\\t\\tarray(\\n\\t\\t\\t\\t\\t'caption' => 'Free shipping on every order over $50',\\n\\t\\t\\t\\t\\t'link'    => 'https:\\\/\\\/example.com\\\/shipping',\\n\\t\\t\\t\\t),\\n\\t\\t\\t),\\n\\t\\t\\t'option'\\n\\t\\t);\\n\\n\\t\\t$page_json = __DIR__ . '\\\/assets\\\/demo-page.json';\\n\\n\\t\\t\\\/\\\/ The blueprint writes this next to seed.php from dev\\\/blueprint\\\/demo-page.js. Copy\\n\\t\\t\\\/\\\/ seed.php onto a dev site by itself and the file is simply absent: you still get the\\n\\t\\t\\\/\\\/ ACF data, just an empty page to build on.\\n\\t\\tif ( is_readable( $page_json ) ) {\\n\\t\\t\\t$data = file_get_contents( $page_json );\\n\\n\\t\\t\\tif ( ! empty( trim( (string) $data ) ) ) {\\n\\t\\t\\t\\tupdate_post_meta( $page_id, '_elementor_data', wp_slash( $data ) );\\n\\t\\t\\t\\tupdate_post_meta( $page_id, '_elementor_edit_mode', 'builder' );\\n\\t\\t\\t\\tupdate_post_meta( $page_id, '_elementor_template_type', 'wp-page' );\\n\\t\\t\\t\\tupdate_post_meta( $page_id, '_elementor_version', defined( 'ELEMENTOR_VERSION' ) ? ELEMENTOR_VERSION : '3.5.0' );\\n\\n\\t\\t\\t\\t\\\/\\\/ Raw meta writes leave Elementor's rendered-markup cache stale; only editor\\n\\t\\t\\t\\t\\\/\\\/ saves invalidate it automatically.\\n\\t\\t\\t\\tdelete_post_meta( $page_id, '_elementor_element_cache' );\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tupdate_option( 'rtb_demo_seeded', $page_id );\\n\\t},\\n\\t20\\n);\\n\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/mu-plugins\\\/assets\\\/demo-page.json\",\"data\":\"[{\\\"id\\\":\\\"103b54a\\\",\\\"elType\\\":\\\"container\\\",\\\"settings\\\":{\\\"container_type\\\":\\\"flex\\\",\\\"content_width\\\":\\\"boxed\\\",\\\"background_background\\\":\\\"classic\\\",\\\"background_color\\\":\\\"#0f172a\\\",\\\"padding\\\":{\\\"top\\\":\\\"80\\\",\\\"right\\\":\\\"24\\\",\\\"bottom\\\":\\\"80\\\",\\\"left\\\":\\\"24\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":false},\\\"flex_direction\\\":\\\"column\\\",\\\"flex_gap\\\":{\\\"size\\\":20,\\\"unit\\\":\\\"px\\\"}},\\\"elements\\\":[{\\\"id\\\":\\\"1009e37\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"REPEATER TAGS FOR ELEMENTOR & ACF\\\",\\\"header_size\\\":\\\"h6\\\",\\\"title_color\\\":\\\"#94a3b8\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"1013c6e\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"Pull any repeater row into any widget\\\",\\\"header_size\\\":\\\"h1\\\",\\\"title_color\\\":\\\"#ffffff\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"101daa5\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"editor\\\":\\\"<p>Every value on this page came out of an ACF repeater. The plugin adds dynamic tags that let a widget point at one specific row and one sub-field. Your data stays exactly where it is, stored how ACF already stores it.<\\\/p>\\\",\\\"text_color\\\":\\\"#94a3b8\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"text-editor\\\"},{\\\"id\\\":\\\"10278dc\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"editor\\\":\\\"<p>Anything sitting in a dashed box came out of the repeater. The rest is me explaining what you are looking at.<\\\/p>\\\",\\\"text_color\\\":\\\"#94a3b8\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"text-editor\\\"},{\\\"id\\\":\\\"1031713\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"editor\\\":\\\"<p>The part worth looking at is in the editor, not here. Open any widget below and click its dynamic tag icon. That row picker is the whole plugin.<\\\/p>\\\",\\\"text_color\\\":\\\"#94a3b8\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"text-editor\\\"}],\\\"isInner\\\":false},{\\\"id\\\":\\\"111ec3b\\\",\\\"elType\\\":\\\"container\\\",\\\"settings\\\":{\\\"container_type\\\":\\\"flex\\\",\\\"content_width\\\":\\\"boxed\\\",\\\"background_background\\\":\\\"classic\\\",\\\"background_color\\\":\\\"#ffffff\\\",\\\"padding\\\":{\\\"top\\\":\\\"80\\\",\\\"right\\\":\\\"24\\\",\\\"bottom\\\":\\\"80\\\",\\\"left\\\":\\\"24\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":false},\\\"flex_direction\\\":\\\"column\\\",\\\"flex_gap\\\":{\\\"size\\\":20,\\\"unit\\\":\\\"px\\\"}},\\\"elements\\\":[{\\\"id\\\":\\\"1045381\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"ROW ADDRESSING\\\",\\\"header_size\\\":\\\"h6\\\",\\\"title_color\\\":\\\"#94a3b8\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"104f1b8\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"Point at a row, not at a value\\\",\\\"header_size\\\":\\\"h2\\\",\\\"title_color\\\":\\\"#0f172a\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"1058fef\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"editor\\\":\\\"<p>These three cards all read the same repeater. The first one takes row 1, the second takes row 2, and so on. None of it is copied into the template, so when you reorder the rows in ACF the cards reorder with them. The line underneath asks for row -1, which just means the last row, however many you end up adding.<\\\/p>\\\",\\\"text_color\\\":\\\"#64748b\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"text-editor\\\"},{\\\"id\\\":\\\"1114e04\\\",\\\"elType\\\":\\\"container\\\",\\\"settings\\\":{\\\"container_type\\\":\\\"flex\\\",\\\"content_width\\\":\\\"full\\\",\\\"flex_direction\\\":\\\"column\\\",\\\"flex_gap\\\":{\\\"size\\\":18,\\\"unit\\\":\\\"px\\\"},\\\"background_background\\\":\\\"classic\\\",\\\"background_color\\\":\\\"#f8fafc\\\",\\\"border_border\\\":\\\"dashed\\\",\\\"border_width\\\":{\\\"top\\\":\\\"2\\\",\\\"right\\\":\\\"2\\\",\\\"bottom\\\":\\\"2\\\",\\\"left\\\":\\\"2\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":true},\\\"border_color\\\":\\\"#cbd5e1\\\",\\\"border_radius\\\":{\\\"top\\\":\\\"14\\\",\\\"right\\\":\\\"14\\\",\\\"bottom\\\":\\\"14\\\",\\\"left\\\":\\\"14\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":true},\\\"padding\\\":{\\\"top\\\":\\\"28\\\",\\\"right\\\":\\\"28\\\",\\\"bottom\\\":\\\"28\\\",\\\"left\\\":\\\"28\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":true}},\\\"elements\\\":[{\\\"id\\\":\\\"10f735f\\\",\\\"elType\\\":\\\"container\\\",\\\"settings\\\":{\\\"container_type\\\":\\\"flex\\\",\\\"content_width\\\":\\\"full\\\",\\\"flex_direction\\\":\\\"row\\\",\\\"flex_gap\\\":{\\\"size\\\":24,\\\"unit\\\":\\\"px\\\"},\\\"flex_align_items\\\":\\\"stretch\\\"},\\\"elements\\\":[{\\\"id\\\":\\\"108a702\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"image\\\":{\\\"url\\\":\\\"\\\"},\\\"title_text\\\":\\\"Product name\\\",\\\"description_text\\\":\\\"Product tagline\\\",\\\"link\\\":{\\\"url\\\":\\\"\\\",\\\"is_external\\\":\\\"\\\",\\\"nofollow\\\":\\\"\\\"},\\\"image_space\\\":{\\\"size\\\":16,\\\"unit\\\":\\\"px\\\"},\\\"title_color\\\":\\\"#0f172a\\\",\\\"description_color\\\":\\\"#64748b\\\",\\\"__dynamic__\\\":{\\\"image\\\":\\\"[elementor-tag id=\\\\\\\"1062e26\\\\\\\" name=\\\\\\\"arts-repeater-media\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%220%22%2C%22sub_field_field_rtb_showcase%22%3A%22image%22%7D\\\\\\\"]\\\",\\\"title_text\\\":\\\"[elementor-tag id=\\\\\\\"106cc5d\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%220%22%2C%22sub_field_field_rtb_showcase%22%3A%22name%22%7D\\\\\\\"]\\\",\\\"description_text\\\":\\\"[elementor-tag id=\\\\\\\"1076a94\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%220%22%2C%22sub_field_field_rtb_showcase%22%3A%22tagline%22%7D\\\\\\\"]\\\",\\\"link\\\":\\\"[elementor-tag id=\\\\\\\"10808cb\\\\\\\" name=\\\\\\\"arts-repeater-url\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%220%22%2C%22sub_field_field_rtb_showcase%22%3A%22link%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"image-box\\\"},{\\\"id\\\":\\\"10bbe15\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"image\\\":{\\\"url\\\":\\\"\\\"},\\\"title_text\\\":\\\"Product name\\\",\\\"description_text\\\":\\\"Product tagline\\\",\\\"link\\\":{\\\"url\\\":\\\"\\\",\\\"is_external\\\":\\\"\\\",\\\"nofollow\\\":\\\"\\\"},\\\"image_space\\\":{\\\"size\\\":16,\\\"unit\\\":\\\"px\\\"},\\\"title_color\\\":\\\"#0f172a\\\",\\\"description_color\\\":\\\"#64748b\\\",\\\"__dynamic__\\\":{\\\"image\\\":\\\"[elementor-tag id=\\\\\\\"1094539\\\\\\\" name=\\\\\\\"arts-repeater-media\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%221%22%2C%22sub_field_field_rtb_showcase%22%3A%22image%22%7D\\\\\\\"]\\\",\\\"title_text\\\":\\\"[elementor-tag id=\\\\\\\"109e370\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%221%22%2C%22sub_field_field_rtb_showcase%22%3A%22name%22%7D\\\\\\\"]\\\",\\\"description_text\\\":\\\"[elementor-tag id=\\\\\\\"10a81a7\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%221%22%2C%22sub_field_field_rtb_showcase%22%3A%22tagline%22%7D\\\\\\\"]\\\",\\\"link\\\":\\\"[elementor-tag id=\\\\\\\"10b1fde\\\\\\\" name=\\\\\\\"arts-repeater-url\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%221%22%2C%22sub_field_field_rtb_showcase%22%3A%22link%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"image-box\\\"},{\\\"id\\\":\\\"10ed528\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"image\\\":{\\\"url\\\":\\\"\\\"},\\\"title_text\\\":\\\"Product name\\\",\\\"description_text\\\":\\\"Product tagline\\\",\\\"link\\\":{\\\"url\\\":\\\"\\\",\\\"is_external\\\":\\\"\\\",\\\"nofollow\\\":\\\"\\\"},\\\"image_space\\\":{\\\"size\\\":16,\\\"unit\\\":\\\"px\\\"},\\\"title_color\\\":\\\"#0f172a\\\",\\\"description_color\\\":\\\"#64748b\\\",\\\"__dynamic__\\\":{\\\"image\\\":\\\"[elementor-tag id=\\\\\\\"10c5c4c\\\\\\\" name=\\\\\\\"arts-repeater-media\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%222%22%2C%22sub_field_field_rtb_showcase%22%3A%22image%22%7D\\\\\\\"]\\\",\\\"title_text\\\":\\\"[elementor-tag id=\\\\\\\"10cfa83\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%222%22%2C%22sub_field_field_rtb_showcase%22%3A%22name%22%7D\\\\\\\"]\\\",\\\"description_text\\\":\\\"[elementor-tag id=\\\\\\\"10d98ba\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%222%22%2C%22sub_field_field_rtb_showcase%22%3A%22tagline%22%7D\\\\\\\"]\\\",\\\"link\\\":\\\"[elementor-tag id=\\\\\\\"10e36f1\\\\\\\" name=\\\\\\\"arts-repeater-url\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%222%22%2C%22sub_field_field_rtb_showcase%22%3A%22link%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"image-box\\\"}],\\\"isInner\\\":true},{\\\"id\\\":\\\"110afcd\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"Newest in the catalog\\\",\\\"header_size\\\":\\\"h5\\\",\\\"title_color\\\":\\\"#64748b\\\",\\\"__dynamic__\\\":{\\\"title\\\":\\\"[elementor-tag id=\\\\\\\"1101196\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%22-1%22%2C%22sub_field_field_rtb_showcase%22%3A%22name%22%2C%22before%22%3A%22Newest+in+the+catalog%3A+%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"}],\\\"isInner\\\":true}],\\\"isInner\\\":false},{\\\"id\\\":\\\"119f506\\\",\\\"elType\\\":\\\"container\\\",\\\"settings\\\":{\\\"container_type\\\":\\\"flex\\\",\\\"content_width\\\":\\\"boxed\\\",\\\"background_background\\\":\\\"classic\\\",\\\"background_color\\\":\\\"#f1f5f9\\\",\\\"padding\\\":{\\\"top\\\":\\\"80\\\",\\\"right\\\":\\\"24\\\",\\\"bottom\\\":\\\"80\\\",\\\"left\\\":\\\"24\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":false},\\\"flex_direction\\\":\\\"column\\\",\\\"flex_gap\\\":{\\\"size\\\":20,\\\"unit\\\":\\\"px\\\"}},\\\"elements\\\":[{\\\"id\\\":\\\"1128a72\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"ONE ROW, MANY TAGS\\\",\\\"header_size\\\":\\\"h6\\\",\\\"title_color\\\":\\\"#94a3b8\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"11328a9\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"Text, color, a number and a gallery, all from row 1\\\",\\\"header_size\\\":\\\"h2\\\",\\\"title_color\\\":\\\"#0f172a\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"113c6e0\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"editor\\\":\\\"<p>Each sub-field goes through whichever tag suits it. The heading below gets both its text and its color out of the same row. The counter reads the price field. The gallery reads one gallery cell that happens to hold several images.<\\\/p>\\\",\\\"text_color\\\":\\\"#64748b\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"text-editor\\\"},{\\\"id\\\":\\\"11956cf\\\",\\\"elType\\\":\\\"container\\\",\\\"settings\\\":{\\\"container_type\\\":\\\"flex\\\",\\\"content_width\\\":\\\"full\\\",\\\"flex_direction\\\":\\\"column\\\",\\\"flex_gap\\\":{\\\"size\\\":18,\\\"unit\\\":\\\"px\\\"},\\\"background_background\\\":\\\"classic\\\",\\\"background_color\\\":\\\"#ffffff\\\",\\\"border_border\\\":\\\"dashed\\\",\\\"border_width\\\":{\\\"top\\\":\\\"2\\\",\\\"right\\\":\\\"2\\\",\\\"bottom\\\":\\\"2\\\",\\\"left\\\":\\\"2\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":true},\\\"border_color\\\":\\\"#cbd5e1\\\",\\\"border_radius\\\":{\\\"top\\\":\\\"14\\\",\\\"right\\\":\\\"14\\\",\\\"bottom\\\":\\\"14\\\",\\\"left\\\":\\\"14\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":true},\\\"padding\\\":{\\\"top\\\":\\\"28\\\",\\\"right\\\":\\\"28\\\",\\\"bottom\\\":\\\"28\\\",\\\"left\\\":\\\"28\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":true}},\\\"elements\\\":[{\\\"id\\\":\\\"1177c2a\\\",\\\"elType\\\":\\\"container\\\",\\\"settings\\\":{\\\"container_type\\\":\\\"flex\\\",\\\"content_width\\\":\\\"full\\\",\\\"flex_direction\\\":\\\"row\\\",\\\"flex_gap\\\":{\\\"size\\\":24,\\\"unit\\\":\\\"px\\\"},\\\"flex_align_items\\\":\\\"stretch\\\"},\\\"elements\\\":[{\\\"id\\\":\\\"115a185\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"Product name\\\",\\\"header_size\\\":\\\"h3\\\",\\\"title_color\\\":\\\"#0f172a\\\",\\\"__dynamic__\\\":{\\\"title\\\":\\\"[elementor-tag id=\\\\\\\"1146517\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%220%22%2C%22sub_field_field_rtb_showcase%22%3A%22name%22%7D\\\\\\\"]\\\",\\\"title_color\\\":\\\"[elementor-tag id=\\\\\\\"115034e\\\\\\\" name=\\\\\\\"arts-repeater-color\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%220%22%2C%22sub_field_field_rtb_showcase%22%3A%22accent%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"116ddf3\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"starting_number\\\":0,\\\"ending_number\\\":100,\\\"prefix\\\":\\\"$\\\",\\\"duration\\\":1200,\\\"title\\\":\\\"Price\\\",\\\"__dynamic__\\\":{\\\"ending_number\\\":\\\"[elementor-tag id=\\\\\\\"1163fbc\\\\\\\" name=\\\\\\\"arts-repeater-number\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%220%22%2C%22sub_field_field_rtb_showcase%22%3A%22price%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"counter\\\"}],\\\"isInner\\\":true},{\\\"id\\\":\\\"118b898\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"gallery_columns\\\":\\\"3\\\",\\\"thumbnail_size\\\":\\\"medium\\\",\\\"__dynamic__\\\":{\\\"wp_gallery\\\":\\\"[elementor-tag id=\\\\\\\"1181a61\\\\\\\" name=\\\\\\\"arts-repeater-gallery\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%220%22%2C%22sub_field_field_rtb_showcase%22%3A%22gallery%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"image-gallery\\\"}],\\\"isInner\\\":true}],\\\"isInner\\\":false},{\\\"id\\\":\\\"120232c\\\",\\\"elType\\\":\\\"container\\\",\\\"settings\\\":{\\\"container_type\\\":\\\"flex\\\",\\\"content_width\\\":\\\"boxed\\\",\\\"background_background\\\":\\\"classic\\\",\\\"background_color\\\":\\\"#ffffff\\\",\\\"padding\\\":{\\\"top\\\":\\\"80\\\",\\\"right\\\":\\\"24\\\",\\\"bottom\\\":\\\"80\\\",\\\"left\\\":\\\"24\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":false},\\\"flex_direction\\\":\\\"column\\\",\\\"flex_gap\\\":{\\\"size\\\":20,\\\"unit\\\":\\\"px\\\"}},\\\"elements\\\":[{\\\"id\\\":\\\"11a933d\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"BEYOND THE POST\\\",\\\"header_size\\\":\\\"h6\\\",\\\"title_color\\\":\\\"#94a3b8\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"11b3174\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"Content from an Options Page\\\",\\\"header_size\\\":\\\"h2\\\",\\\"title_color\\\":\\\"#0f172a\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"11bcfab\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"editor\\\":\\\"<p>This notice isn't stored on this page at all. It's under <em>Demo Site Settings<\\\/em> in the admin menu if you want to poke at it. Change it there and every page bound to it changes with it.<\\\/p>\\\",\\\"text_color\\\":\\\"#64748b\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"text-editor\\\"},{\\\"id\\\":\\\"11ee6be\\\",\\\"elType\\\":\\\"container\\\",\\\"settings\\\":{\\\"container_type\\\":\\\"flex\\\",\\\"content_width\\\":\\\"full\\\",\\\"flex_direction\\\":\\\"column\\\",\\\"flex_gap\\\":{\\\"size\\\":18,\\\"unit\\\":\\\"px\\\"},\\\"background_background\\\":\\\"classic\\\",\\\"background_color\\\":\\\"#f8fafc\\\",\\\"border_border\\\":\\\"dashed\\\",\\\"border_width\\\":{\\\"top\\\":\\\"2\\\",\\\"right\\\":\\\"2\\\",\\\"bottom\\\":\\\"2\\\",\\\"left\\\":\\\"2\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":true},\\\"border_color\\\":\\\"#cbd5e1\\\",\\\"border_radius\\\":{\\\"top\\\":\\\"14\\\",\\\"right\\\":\\\"14\\\",\\\"bottom\\\":\\\"14\\\",\\\"left\\\":\\\"14\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":true},\\\"padding\\\":{\\\"top\\\":\\\"28\\\",\\\"right\\\":\\\"28\\\",\\\"bottom\\\":\\\"28\\\",\\\"left\\\":\\\"28\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":true}},\\\"elements\\\":[{\\\"id\\\":\\\"11d0c19\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"Site notice\\\",\\\"header_size\\\":\\\"h4\\\",\\\"title_color\\\":\\\"#0f172a\\\",\\\"__dynamic__\\\":{\\\"title\\\":\\\"[elementor-tag id=\\\\\\\"11c6de2\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_notice%22%2C%22row_index%22%3A%220%22%2C%22sub_field_field_rtb_notice%22%3A%22caption%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"11e4887\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"text\\\":\\\"See the details\\\",\\\"size\\\":\\\"sm\\\",\\\"background_color\\\":\\\"#0f172a\\\",\\\"button_text_color\\\":\\\"#ffffff\\\",\\\"__dynamic__\\\":{\\\"link\\\":\\\"[elementor-tag id=\\\\\\\"11daa50\\\\\\\" name=\\\\\\\"arts-repeater-url\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_notice%22%2C%22row_index%22%3A%220%22%2C%22sub_field_field_rtb_notice%22%3A%22link%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"button\\\"}],\\\"isInner\\\":true},{\\\"id\\\":\\\"11f84f5\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"editor\\\":\\\"<p>Category, author and user contexts work the same way, but they need an archive template to sit on, and archive templates come with Elementor Pro. The tag itself isn't fussy about where it lives.<\\\/p>\\\",\\\"text_color\\\":\\\"#64748b\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"text-editor\\\"}],\\\"isInner\\\":false},{\\\"id\\\":\\\"12d1daf\\\",\\\"elType\\\":\\\"container\\\",\\\"settings\\\":{\\\"container_type\\\":\\\"flex\\\",\\\"content_width\\\":\\\"boxed\\\",\\\"background_background\\\":\\\"classic\\\",\\\"background_color\\\":\\\"#f1f5f9\\\",\\\"padding\\\":{\\\"top\\\":\\\"80\\\",\\\"right\\\":\\\"24\\\",\\\"bottom\\\":\\\"80\\\",\\\"left\\\":\\\"24\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":false},\\\"flex_direction\\\":\\\"column\\\",\\\"flex_gap\\\":{\\\"size\\\":20,\\\"unit\\\":\\\"px\\\"}},\\\"elements\\\":[{\\\"id\\\":\\\"120c163\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"NESTED STRUCTURES\\\",\\\"header_size\\\":\\\"h6\\\",\\\"title_color\\\":\\\"#94a3b8\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"1215f9a\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"When the data gets nested\\\",\\\"header_size\\\":\\\"h2\\\",\\\"title_color\\\":\\\"#0f172a\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"121fdd1\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"editor\\\":\\\"<p>A sub-field inside a group gets addressed with a dot path, like <em>meta.material<\\\/em>. Put a repeater inside a repeater and the picker grows a second tier for the child rows. Flexible content is read per layout, so you're only offered the sub-fields the row actually has.<\\\/p>\\\",\\\"text_color\\\":\\\"#64748b\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"text-editor\\\"},{\\\"id\\\":\\\"12c7f78\\\",\\\"elType\\\":\\\"container\\\",\\\"settings\\\":{\\\"container_type\\\":\\\"flex\\\",\\\"content_width\\\":\\\"full\\\",\\\"flex_direction\\\":\\\"column\\\",\\\"flex_gap\\\":{\\\"size\\\":18,\\\"unit\\\":\\\"px\\\"},\\\"background_background\\\":\\\"classic\\\",\\\"background_color\\\":\\\"#ffffff\\\",\\\"border_border\\\":\\\"dashed\\\",\\\"border_width\\\":{\\\"top\\\":\\\"2\\\",\\\"right\\\":\\\"2\\\",\\\"bottom\\\":\\\"2\\\",\\\"left\\\":\\\"2\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":true},\\\"border_color\\\":\\\"#cbd5e1\\\",\\\"border_radius\\\":{\\\"top\\\":\\\"14\\\",\\\"right\\\":\\\"14\\\",\\\"bottom\\\":\\\"14\\\",\\\"left\\\":\\\"14\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":true},\\\"padding\\\":{\\\"top\\\":\\\"28\\\",\\\"right\\\":\\\"28\\\",\\\"bottom\\\":\\\"28\\\",\\\"left\\\":\\\"28\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":true}},\\\"elements\\\":[{\\\"id\\\":\\\"1233a3f\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"Material\\\",\\\"header_size\\\":\\\"h5\\\",\\\"title_color\\\":\\\"#0f172a\\\",\\\"__dynamic__\\\":{\\\"title\\\":\\\"[elementor-tag id=\\\\\\\"1229c08\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%220%22%2C%22sub_field_field_rtb_showcase%22%3A%22meta.material%22%2C%22before%22%3A%22Material%3A+%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"1265152\\\",\\\"elType\\\":\\\"container\\\",\\\"settings\\\":{\\\"container_type\\\":\\\"flex\\\",\\\"content_width\\\":\\\"full\\\",\\\"flex_direction\\\":\\\"row\\\",\\\"flex_gap\\\":{\\\"size\\\":24,\\\"unit\\\":\\\"px\\\"},\\\"flex_align_items\\\":\\\"stretch\\\"},\\\"elements\\\":[{\\\"id\\\":\\\"12476ad\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"First spec\\\",\\\"header_size\\\":\\\"h5\\\",\\\"title_color\\\":\\\"#0f172a\\\",\\\"__dynamic__\\\":{\\\"title\\\":\\\"[elementor-tag id=\\\\\\\"123d876\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%220%22%2C%22sub_field_field_rtb_showcase%22%3A%22specs%22%2C%22child_row_index_field_rtb_si_specs%22%3A%220%22%2C%22child_sub_field_field_rtb_si_specs%22%3A%22spec_name%22%2C%22before%22%3A%22First+spec%3A+%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"125b31b\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"Last spec value\\\",\\\"header_size\\\":\\\"h5\\\",\\\"title_color\\\":\\\"#0f172a\\\",\\\"__dynamic__\\\":{\\\"title\\\":\\\"[elementor-tag id=\\\\\\\"12514e4\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%220%22%2C%22sub_field_field_rtb_showcase%22%3A%22specs%22%2C%22child_row_index_field_rtb_si_specs%22%3A%22-1%22%2C%22child_sub_field_field_rtb_si_specs%22%3A%22spec_value%22%2C%22before%22%3A%22Last+spec%3A+%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"}],\\\"isInner\\\":true},{\\\"id\\\":\\\"1278dc0\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"Empty child repeater\\\",\\\"header_size\\\":\\\"h5\\\",\\\"title_color\\\":\\\"#64748b\\\",\\\"__dynamic__\\\":{\\\"title\\\":\\\"[elementor-tag id=\\\\\\\"126ef89\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%222%22%2C%22sub_field_field_rtb_showcase%22%3A%22specs%22%2C%22child_row_index_field_rtb_si_specs%22%3A%220%22%2C%22child_sub_field_field_rtb_si_specs%22%3A%22spec_name%22%2C%22fallback%22%3A%22Row+3+never+got+a+spec+sheet%2C+so+this+line+falls+back+instead+of+erroring.%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"12aa4d3\\\",\\\"elType\\\":\\\"container\\\",\\\"settings\\\":{\\\"container_type\\\":\\\"flex\\\",\\\"content_width\\\":\\\"full\\\",\\\"flex_direction\\\":\\\"row\\\",\\\"flex_gap\\\":{\\\"size\\\":24,\\\"unit\\\":\\\"px\\\"},\\\"flex_align_items\\\":\\\"stretch\\\"},\\\"elements\\\":[{\\\"id\\\":\\\"128ca2e\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"Layout heading\\\",\\\"header_size\\\":\\\"h5\\\",\\\"title_color\\\":\\\"#0f172a\\\",\\\"__dynamic__\\\":{\\\"title\\\":\\\"[elementor-tag id=\\\\\\\"1282bf7\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_sections%22%2C%22row_index%22%3A%220%22%2C%22sub_field_field_rtb_sections%22%3A%22heading%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"12a069c\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"Testimonial author\\\",\\\"header_size\\\":\\\"h5\\\",\\\"title_color\\\":\\\"#0f172a\\\",\\\"__dynamic__\\\":{\\\"title\\\":\\\"[elementor-tag id=\\\\\\\"1296865\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_sections%22%2C%22row_index%22%3A%221%22%2C%22sub_field_field_rtb_sections%22%3A%22author%22%2C%22before%22%3A%22%E2%80%94+%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"}],\\\"isInner\\\":true},{\\\"id\\\":\\\"12be141\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"Author on a hero row\\\",\\\"header_size\\\":\\\"h5\\\",\\\"title_color\\\":\\\"#64748b\\\",\\\"__dynamic__\\\":{\\\"title\\\":\\\"[elementor-tag id=\\\\\\\"12b430a\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_sections%22%2C%22row_index%22%3A%220%22%2C%22sub_field_field_rtb_sections%22%3A%22author%22%2C%22fallback%22%3A%22Row+1+uses+the+hero+layout%2C+which+has+no+author+field.+You+get+the+fallback.%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"}],\\\"isInner\\\":true}],\\\"isInner\\\":false},{\\\"id\\\":\\\"1320f67\\\",\\\"elType\\\":\\\"container\\\",\\\"settings\\\":{\\\"container_type\\\":\\\"flex\\\",\\\"content_width\\\":\\\"boxed\\\",\\\"background_background\\\":\\\"classic\\\",\\\"background_color\\\":\\\"#0f172a\\\",\\\"padding\\\":{\\\"top\\\":\\\"80\\\",\\\"right\\\":\\\"24\\\",\\\"bottom\\\":\\\"80\\\",\\\"left\\\":\\\"24\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":false},\\\"flex_direction\\\":\\\"column\\\",\\\"flex_gap\\\":{\\\"size\\\":20,\\\"unit\\\":\\\"px\\\"}},\\\"elements\\\":[{\\\"id\\\":\\\"12dbbe6\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"SAFETY\\\",\\\"header_size\\\":\\\"h6\\\",\\\"title_color\\\":\\\"#94a3b8\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"12e5a1d\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"When the row is missing\\\",\\\"header_size\\\":\\\"h2\\\",\\\"title_color\\\":\\\"#ffffff\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"},{\\\"id\\\":\\\"12ef854\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"editor\\\":\\\"<p>Content drifts. Somebody deletes a row, or the template ships before the content does. The line below asks for row 6 of a repeater that only has three, and gets the fallback you typed in the editor rather than a PHP warning or a silent gap.<\\\/p>\\\",\\\"text_color\\\":\\\"#94a3b8\\\"},\\\"elements\\\":[],\\\"widgetType\\\":\\\"text-editor\\\"},{\\\"id\\\":\\\"130d2f9\\\",\\\"elType\\\":\\\"container\\\",\\\"settings\\\":{\\\"container_type\\\":\\\"flex\\\",\\\"content_width\\\":\\\"full\\\",\\\"flex_direction\\\":\\\"column\\\",\\\"flex_gap\\\":{\\\"size\\\":18,\\\"unit\\\":\\\"px\\\"},\\\"background_background\\\":\\\"classic\\\",\\\"background_color\\\":\\\"#16233c\\\",\\\"border_border\\\":\\\"dashed\\\",\\\"border_width\\\":{\\\"top\\\":\\\"2\\\",\\\"right\\\":\\\"2\\\",\\\"bottom\\\":\\\"2\\\",\\\"left\\\":\\\"2\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":true},\\\"border_color\\\":\\\"#3b4b66\\\",\\\"border_radius\\\":{\\\"top\\\":\\\"14\\\",\\\"right\\\":\\\"14\\\",\\\"bottom\\\":\\\"14\\\",\\\"left\\\":\\\"14\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":true},\\\"padding\\\":{\\\"top\\\":\\\"28\\\",\\\"right\\\":\\\"28\\\",\\\"bottom\\\":\\\"28\\\",\\\"left\\\":\\\"28\\\",\\\"unit\\\":\\\"px\\\",\\\"isLinked\\\":true}},\\\"elements\\\":[{\\\"id\\\":\\\"13034c2\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"title\\\":\\\"Row 6\\\",\\\"header_size\\\":\\\"h5\\\",\\\"title_color\\\":\\\"#94a3b8\\\",\\\"__dynamic__\\\":{\\\"title\\\":\\\"[elementor-tag id=\\\\\\\"12f968b\\\\\\\" name=\\\\\\\"arts-repeater-text\\\\\\\" settings=\\\\\\\"%7B%22repeater_field%22%3A%22field_rtb_showcase%22%2C%22row_index%22%3A%225%22%2C%22sub_field_field_rtb_showcase%22%3A%22name%22%2C%22fallback%22%3A%22There%27s+no+row+6.+This+is+the+fallback+talking.%22%7D\\\\\\\"]\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"heading\\\"}],\\\"isInner\\\":true},{\\\"id\\\":\\\"1317130\\\",\\\"elType\\\":\\\"widget\\\",\\\"settings\\\":{\\\"text\\\":\\\"Get the plugin\\\",\\\"size\\\":\\\"md\\\",\\\"background_color\\\":\\\"#ffffff\\\",\\\"button_text_color\\\":\\\"#0f172a\\\",\\\"link\\\":{\\\"url\\\":\\\"https:\\\/\\\/wordpress.org\\\/plugins\\\/repeater-tags-for-elementor-acf\\\/\\\",\\\"is_external\\\":\\\"on\\\",\\\"nofollow\\\":\\\"\\\"}},\\\"elements\\\":[],\\\"widgetType\\\":\\\"button\\\"}],\\\"isInner\\\":false}]\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; require_once '\\\/wordpress\\\/wp-admin\\\/includes\\\/admin.php'; do_action( 'admin_init' );\"}]}"}},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3605185,"resolution":"1","location":"assets","locale":"","width":1520,"height":1520},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3605185,"resolution":"2","location":"assets","locale":"","width":1520,"height":1520},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3605185,"resolution":"3","location":"assets","locale":"","width":1520,"height":1520},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3605185,"resolution":"4","location":"assets","locale":"","width":1520,"height":1520}},"screenshots":{"1":"Repeater Row: Text \u2014 pick the repeater, the row (labeled by its content), and the sub-field; the caption lands in the heading","2":"Repeater Row: Media \u2014 same picker, switched to the Image type; the row's photo becomes the widget's image","3":"Repeat mode (Elementor Pro): a Loop Grid card bound to \"Current loop row\" \u2014 one template, one card per repeater row","4":"A nested repeater sub-field opens a second row and sub-field picker for the child rows"}},"plugin_section":[],"plugin_tags":[2211,203546,2010,170115,76538],"plugin_category":[59],"plugin_contributors":[241532],"plugin_business_model":[],"class_list":["post-339066","plugin","type-plugin","status-publish","hentry","plugin_tags-acf","plugin_tags-acf-repeater","plugin_tags-custom-fields","plugin_tags-dynamic-tags","plugin_tags-elementor","plugin_category-utilities-and-tools","plugin_contributors-artemsemkin","plugin_committers-artemsemkin"],"banners":{"banner":"https:\/\/ps.w.org\/repeater-tags-for-elementor-acf\/assets\/banner-772x250.png?rev=3605185","banner_2x":"https:\/\/ps.w.org\/repeater-tags-for-elementor-acf\/assets\/banner-1544x500.png?rev=3605185","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/repeater-tags-for-elementor-acf\/assets\/icon.svg?rev=3605185","icon":"https:\/\/ps.w.org\/repeater-tags-for-elementor-acf\/assets\/icon.svg?rev=3605185","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/repeater-tags-for-elementor-acf\/assets\/screenshot-1.png?rev=3605185","caption":"Repeater Row: Text \u2014 pick the repeater, the row (labeled by its content), and the sub-field; the caption lands in the heading"},{"src":"https:\/\/ps.w.org\/repeater-tags-for-elementor-acf\/assets\/screenshot-2.png?rev=3605185","caption":"Repeater Row: Media \u2014 same picker, switched to the Image type; the row's photo becomes the widget's image"},{"src":"https:\/\/ps.w.org\/repeater-tags-for-elementor-acf\/assets\/screenshot-3.png?rev=3605185","caption":"Repeat mode (Elementor Pro): a Loop Grid card bound to \"Current loop row\" \u2014 one template, one card per repeater row"},{"src":"https:\/\/ps.w.org\/repeater-tags-for-elementor-acf\/assets\/screenshot-4.png?rev=3605185","caption":"A nested repeater sub-field opens a second row and sub-field picker for the child rows"}],"raw_content":"<!--section=description-->\n<p>Elementor's dynamic tags can't reach inside an ACF repeater: sub-fields don't show up in the tag picker at all. Getting \"the second image of that repeater\" into a section background usually ends in a PHP snippet, a shortcode, or a paid add-on.<\/p>\n\n<p>This plugin adds a \"Repeater Tags\" group to the dynamic tag picker. Every tag works the same way: pick the repeater, pick the row (any index, or \"Last row\"), pick the sub-field. The value lands in whatever control you attached the tag to. No widgets to place, no templates to maintain.<\/p>\n\n<p>Things people build with it:<\/p>\n\n<ul>\n<li>The first row's headline in a heading widget<\/li>\n<li>The second image of a repeater as a section background<\/li>\n<li>A gallery sub-field feeding a gallery widget<\/li>\n<li>An offer card where the price counter, the accent color and the \"sale ends\" countdown all come from one row<\/li>\n<li>A product card whose colour variants come from a repeater nested inside the product's row<\/li>\n<li>A \"latest update\" badge bound to the last row, which keeps showing the newest entry as editors add rows<\/li>\n<li>A site-wide announcement bar fed by a repeater on an ACF options page<\/li>\n<li>One \"Product Details\" template in Theme Builder where every product renders its own rows (Elementor Pro)<\/li>\n<li>A Loop Grid where each card is a repeater row \u2014 three rows, three cards (Elementor Pro)<\/li>\n<\/ul>\n\n<h4>The seven tags<\/h4>\n\n<p>Seven tags land in the picker, one per value shape:<\/p>\n\n<ul>\n<li><strong>Repeater Row: Text<\/strong> \u2014 for text controls anywhere, from headings to the Video widget's URL and the Google Maps address. Reads text, textarea, email, URL, number, range, date, time and color sub-fields as plain text; choice fields (select, checkbox, radio, button group) as their labels; WYSIWYG as rich text; Google Map as its address<\/li>\n<li><strong>Repeater Row: Media<\/strong> \u2014 for image controls, including section backgrounds. Reads image and file sub-fields<\/li>\n<li><strong>Repeater Row: URL<\/strong> \u2014 for link controls like buttons. Reads URL, Link, page link and file sub-fields \u2014 and post object, relationship, taxonomy and user sub-fields as the linked post, term or author URL<\/li>\n<li><strong>Repeater Row: Gallery<\/strong> \u2014 for gallery controls. Reads gallery sub-fields<\/li>\n<li><strong>Repeater Row: Number<\/strong> \u2014 for numeric controls like the Counter and Progress Bar. Reads number and range sub-fields<\/li>\n<li><strong>Repeater Row: Color<\/strong> \u2014 for every color control in the Style tabs. Reads color picker sub-fields<\/li>\n<li><strong>Repeater Row: Date<\/strong> \u2014 for date controls like the Countdown (Elementor Pro). Reads date-time picker sub-fields and outputs a machine-readable date<\/li>\n<\/ul>\n\n<p>Each tag's sub-field dropdown offers only fields it can actually render \u2014 no pick-it-and-nothing-happens dead ends. Values follow the return format configured in ACF, the Date tag's machine format being the one deliberate exception.<\/p>\n\n<h4>Works with free Elementor<\/h4>\n\n<p>The plugin has no Elementor Pro dependency. Free Elementor ships no dynamic tags of its own, so on a free Elementor + ACF site these are the only dynamic tags in the picker. With Secure Custom Fields as the repeater provider, the entire stack is free.<\/p>\n\n<h4>Repeaters on options pages, terms and users<\/h4>\n\n<p>Repeaters attached to an ACF options page are available site-wide and marked \"(Options)\" in the picker. On taxonomy and author archive templates, tags read the repeater from the current term or user.<\/p>\n\n<h4>Extras with Elementor Pro<\/h4>\n\n<p>Pro isn't required, but if it's active:<\/p>\n\n<ul>\n<li>Tags resolve per post inside Theme Builder single templates and Loop items, so one template shows each post's own rows<\/li>\n<li>\"Repeat by ACF Repeater\" on the Loop Grid and Loop Carousel renders one card per repeater row \u2014 design the card once, bind its tags to \"Current loop row\", and three rows become three cards<\/li>\n<li>A \"Repeater row count\" display condition shows or hides a section depending on how many rows a repeater holds<\/li>\n<\/ul>\n\n<!--section=installation-->\n<p>Chances are Elementor and ACF Pro (or Secure Custom Fields) already run on your site, with a repeater or two wired up. From there:<\/p>\n\n<ol>\n<li>Install and activate the plugin. There is no settings screen \u2014 the tags just appear.<\/li>\n<li>In Elementor, click the dynamic tag icon on any supported control: text, image, link, gallery, number, color, date.<\/li>\n<li>Under \"Repeater Tags\", pick the repeater, pick the row \u2014 the picker labels rows by their content \u2014 and pick the sub-field.<\/li>\n<\/ol>\n\n<p>Starting from scratch instead? You need Elementor (the free version is enough), a repeater provider \u2014 ACF Pro or the free Secure Custom Fields \u2014 and a repeater with saved rows. Then the three steps above.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20loop%20a%20layout%20for%20every%20row%3F\"><h3>Does it loop a layout for every row?<\/h3><\/dt>\n<dd><p>Yes, with Elementor Pro: enable \"Repeat by ACF Repeater\" on a Loop Grid or Loop Carousel and bind the loop template's tags to \"Current loop row\" \u2014 one card per row, across every queried post. Pagination counts posts, not cards, so a page can show more cards than the \"posts per page\" number. While editing the loop template itself, the card previews the first row of the template's \"Preview Dynamic Content as\" post \u2014 point it at a post that has rows to see real values instead of placeholders. On free Elementor (which has no loop widgets) each tag reads one addressed row: any index, or \"Last row\".<\/p><\/dd>\n<dt id=\"do%20i%20need%20elementor%20pro%3F\"><h3>Do I need Elementor Pro?<\/h3><\/dt>\n<dd><p>No. Everything runs on free Elementor 3.5 or newer. With Pro on top you get Theme Builder templates, repeat mode on the Loop Grid and Loop Carousel, and the row count display condition.<\/p><\/dd>\n<dt id=\"do%20i%20need%20acf%20pro%3F\"><h3>Do I need ACF Pro?<\/h3><\/dt>\n<dd><p>You need a plugin that provides the repeater field type: ACF Pro, or Secure Custom Fields \u2014 the free fork on WordPress.org that includes repeaters and options pages. Both work identically here. With free ACF (no repeaters) the picker has nothing to list.<\/p><\/dd>\n<dt id=\"why%20does%20the%20row%20picker%20say%20%22no%20rows%20found%20on%20this%20post%22%3F\"><h3>Why does the row picker say \"No rows found on this post\"?<\/h3><\/dt>\n<dd><p>Rows are read from the current context: the post you're editing, or whatever \"Preview Dynamic Content as\" points to in a Theme Builder template \u2014 a post, or the term of a taxonomy archive. If that target has no saved rows there's nothing to pick, and on the frontend the tag renders empty where rows are missing. Add rows to the previewed target or switch the preview to one that has them.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20rows%20are%20reordered%20in%20the%20wordpress%20admin%3F\"><h3>What happens when rows are reordered in the WordPress admin?<\/h3><\/dt>\n<dd><p>Addressing is positional. A tag pointing at row 2 shows whatever currently sits in row 2, not what was there when you picked it. \"Last row\" always follows the final row. ACF rows have no stable IDs, so pinning a row by its content isn't possible.<\/p><\/dd>\n<dt id=\"does%20it%20read%20nested%20fields%20%E2%80%94%20groups%2C%20repeaters%20inside%20repeaters%2C%20flexible%20content%3F\"><h3>Does it read nested fields \u2014 groups, repeaters inside repeaters, flexible content?<\/h3><\/dt>\n<dd><p>Yes, one level deep. Group sub-fields appear in the sub-field dropdown as \"Group \u2192 Field\" paths. A repeater inside a repeater gets a second row picker: pick the parent row, then the nested row \u2014 any index, or \"Last row\". Flexible content fields work like repeaters whose row picker labels each row with its layout; if a row's layout doesn't include the chosen field, the tag renders empty for that row instead of guessing. It also works in reverse: a repeater or flexible content field sitting inside a top-level group shows up in the repeater picker as its own entry. Deeper nesting isn't supported.<\/p><\/dd>\n<dt id=\"which%20sub-field%20types%20are%20not%20supported%3F\"><h3>Which sub-field types are not supported?<\/h3><\/dt>\n<dd><p>oEmbed (store the URL in a URL sub-field instead), true\/false, password, icon picker, and clone fields. Structures nested deeper than one level are out too.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20archive%20templates%3F\"><h3>Does it work on archive templates?<\/h3><\/dt>\n<dd><p>Taxonomy term and author archives work; the tag reads the repeater from the queried term or user. A custom post type archive has no single post to read from, so tags there fall back to the first post of the archive's main query. The editor previews them against the newest post of that type \u2014 the same post on a date-sorted archive, a different one under a custom sort order or on later pages.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: seven dynamic tags (text, image, URL, gallery, number, color, date), row picker with \"Last row\" mode, nested fields one level deep (groups as paths, repeater-in-repeater with a second row picker, flexible content), options page, term and user contexts, Theme Builder support. With Elementor Pro: repeat mode for Loop Grid\/Carousel (one card per row) and the row count display condition.<\/li>\n<\/ul>","raw_excerpt":"ACF repeater sub-fields as native Elementor dynamic tags. Pick a repeater, a row, a sub-field, use it anywhere dynamic tags work. No Elementor Pro.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/339066","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=339066"}],"author":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/artemsemkin"}],"wp:attachment":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=339066"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=339066"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=339066"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=339066"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=339066"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=339066"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}