
Tiger Repeater is the widget you reach for when a post, page, or custom post type has a Repeater or Group field created in CPT Builder — think specifications lists, team member skills, pricing feature lists, FAQ pairs stored as sub-fields, or any structured multi-row data attached to a single post — and you want it to appear as plain, styled rows or a card grid without building a template for each row. It reads the field’s JSON-encoded rows directly from post meta and prints every sub-field automatically, so it exists specifically to save you from hand-mapping each sub-field with dynamic tags one at a time.
Setting it up
In the Repeater Source section, the first control is Field, a dropdown populated from every Repeater or Group field defined in CPT Builder. If you’d rather point at meta directly — say the JSON was written by another plugin or a custom integration — the Or custom meta key text field overrides whatever is picked in Field; the widget checks custom key first and only falls back to Field if it’s empty. Layout switches between List (rows stacked vertically) and Grid; when Grid is selected, a responsive Columns control (1–6, default 3) appears and drives a CSS grid-template-columns on the wrapper. Sub-field Direction controls whether each row’s sub-fields stack (Stacked) or sit inline (Inline) — this is a flex-direction toggle on the row itself, independent of the List/Grid layout choice, so you can have a grid of cards where each card’s fields are laid out inline. Toggle Show sub-field labels to print each sub-field’s label above its value (off by default). Image size picks the registered WordPress image size (Thumbnail/Medium/Large/Full) used whenever a sub-field is of type image. Empty fallback is a dynamic-tag-enabled text field shown when the field resolves to no rows at all.
How rows render
The widget decodes the meta value with json_decode and normalizes it: if the decoded array’s keys are sequential integers it treats it as a list of rows (a Repeater); otherwise it wraps the single associative array as one row (a Group field renders as exactly one row). Each sub-field is rendered by type: image uses wp_get_attachment_image at your chosen size; url and email render as real anchor links (mailto: for email); wysiwyg and textarea run through wpautop and wp_kses_post so paragraph breaks survive; checkbox prints a localized Yes/No rather than a raw 1/0; color prints a small swatch plus the hex/value text; everything else falls back to plain escaped text. Labels, when shown, come from the field definition’s sub_fields — if a sub-field key can’t be matched to a known definition, the widget falls back to auto-generating a label by title-casing the underscore key, so unrecognized keys still display sensibly rather than breaking.
Styling controls
The Style tab has four sections: Row / Card covers Gap Between Rows, Gap Between Sub-fields, Alignment (left/center/right), Padding, Border Radius, and a Normal/Hover tab pair with background (classic or gradient), border, box-shadow, and a Hover Lift slider that animates a translateY on hover. Sub-field Label (only visible when Show sub-field labels is on) controls label Color, Typography, Text Transform, and Spacing Below. Value controls the value text color, typography, and separate Link Color / Link Hover Color for url and email sub-fields. Image controls Max Width, Border Radius, Border, and Box Shadow for any image sub-fields in the rows.
When to use it vs. related widgets
Tiger Repeater is purely a data-to-markup renderer: it has no per-row design surface beyond the shared row/label/value/image styling groups, so every row looks structurally identical. That’s precisely its limit versus Tiger Repeater Loop, which renders a full Elementor template per row instead — reach for the Loop widget the moment you need a row to look like a genuinely custom card (icon layout, buttons, background images per row, mixed widget types) rather than a stacked list of labeled values. Tiger Repeater is also unrelated to Post, AJAX Grid, Dynamic Loop, or Tiger Query Grid, which all loop over separate posts/CPT entries queried by WP_Query or a custom query — Tiger Repeater instead loops over sub-rows of a single field stored on one post, so it has no query, filter, or pagination behavior at all. If your image or media data is the point of the display (a photo set, video reel), Tiger Gallery — which can also source from a repeater’s image sub-field — is a better fit than printing an image sub-field through Tiger Repeater’s plain Image cell.
Practical tips
- If a row contains a sub-field key that isn’t part of the CPT Builder field definition (e.g., legacy data or a hand-written JSON blob), the widget still renders it using an inferred label — verify field key spelling matches exactly, since a mismatch silently produces a generic title-cased label instead of an error.
- Use Custom meta key as an escape hatch for data written outside CPT Builder — anything that resolves to JSON-encoded rows (list or single object) will work, since the widget’s row-detection logic only inspects the array’s key structure, not its origin.
- Set Empty fallback with dynamic tags (e.g., a per-post ACF text field) if you want a contextual “no data yet” message rather than the generic editor-only notice, which never shows on the live front end.
- When mixing Grid layout with Inline sub-field direction, keep the sub-field count consistent across rows — since there’s no column templating, rows with a different number of fields will visually misalign inside the grid cells.