Show any list of content — posts, products, events, custom types, even data from an external API — using a layout you design. You build one "card" template, and the widget repeats it for every item, with grid columns and pagination.
Requires: the Dynamic Widgets module enabled in Tiger Elements → Settings. Query Grid also works with the Query Builder.
How it works (the loop concept)
- You design a Loop Template — a single card showing one item (image, title, excerpt, price, button…).
- You add the Dynamic Loop (or Query Grid) widget and point it at that template.
- The widget repeats your card for every item in the query, arranging them in a grid.
Because the card is your own Elementor design, the listing looks exactly how you want — not a fixed style.
Step 1 — Build the loop template
- Create a template of type Loop (in Theme Builder or the template library).
- Inside it, add dynamic widgets that read the current item — e.g. Featured Image, Post Title, Post Excerpt, Product Price, Add to Cart.
- Save it.
Tip: design the card at a comfortable width; the grid handles the columns.
Step 2 — Add the Dynamic Loop
- Drag in the Dynamic Loop widget and pick a Grid Template (and optionally a separate List Template plus a Grid/List toggle switch).
- Query Source — pick what to show:
- WordPress Query — a post type with category/tag/author filters and order.
- Current Query (Archive) — inherit the main query of the page you’re on (category, tag, taxonomy, CPT archive, author, date or search page) — use this to build an Archive template body.
- Related Posts (by Meta Key) — posts whose meta key value equals the current post’s ID (e.g.
_agent_idfinds every listing where that field points back to the current agent). - External REST API — any JSON endpoint URL, with field mapping for title/image/excerpt/link and an optional array-root key and response cache.
- Grid Columns and Gap — control the layout.
- Pagination — turn it on and choose Numbers or a Load More AJAX button.
Connecting a filter widget
Set the same Connection ID (Cross-Widget Sync section) on a Tiger AJAX Filter widget to drive the loop’s results live from that filter, without a page reload.
Pagination
- Numbered pages use real, shareable URLs (
/page/2/), which is great for SEO. - Load More adds items in place without a page reload.
The widget automatically shows the pager only when there's more than one page.
Query Grid vs Dynamic Loop
- Dynamic Loop — the widest range of data sources: a plain WP Query, the current archive’s own query, a “related by meta key” lookup, or an external REST API — plus the loop‑template design and a built‑in Grid/List toggle and live-filter connection.
- Query Grid — built for WordPress content specifically, with either an inline query (post type/order + an AND/OR repeater of custom-field and taxonomy conditions) or a Saved Tiger Query from the Query Builder. Its template is optional — leave it unset and results render as a simple card.
Use Dynamic Loop when the data isn’t a straightforward WordPress query (an external API, an archive-driven template, or a meta-key relationship) or you want the grid/list toggle; use Query Grid when you want to reuse a saved query or build fine-grained meta/taxonomy conditions.
Tips
- Build one polished loop template and reuse it across the site with different queries.
- For a shop, put Product Price, Rating, and Add to Cart in the loop card.
- Use Current Query (Archive) in a Dynamic Loop inside a Theme Builder Archive template so the grid automatically follows whatever category/tag/search the visitor is viewing.
- Combine Query Grid with Relations to show "related items" lists (e.g. "More from this brand").
Troubleshooting
My cards are empty. The loop template must contain dynamic widgets (Title, Image, Excerpt, Price…) that read the current item — a plain heading with fixed text won't change per item.
Nothing shows at all. Check the Query Source and filters — an over‑specific filter returns no items. Confirm the chosen Loop Template is selected.
Pagination isn't appearing. Pagination only shows when the query returns more items than fit on one page. Lower the "per page" number to test.
The External REST API source shows nothing. Confirm the endpoint returns JSON and, if the products/items are nested (e.g. under a data key), set the Array Root Key to match.