Skip to main content
Documentation/Dynamic Data/Loops/Post Loops

Post Loops

The Post Loop Builder repeats a Global Block once per post. It's the element behind blog
indexes, related-post rows, portfolio grids, team listings — anything driven by a post
type.

Building the loop

  1. Add Post Loop Builder from Add → Dynamic.
  2. In Content → Repeated Block, choose the Global Block to repeat, and optionally
    the Tag each item is wrapped in. Inside the block, use Dynamic Data so each copy displays its own post's data.
  3. Set the query, the layout, and (optionally) pagination.

Choosing what the loop shows

Content → Query decides which posts the loop renders. It offers three modes:

  • Custom opens the visual Query Builder — the normal choice.
  • Text takes a query string, for example post_type=post&posts_per_page=4.
  • Array takes PHP that returns an array of WP_Query arguments.

The Query Builder

Breakdance Query Builder showing source, amount, filters, and ordering
Breakdance Query Builder showing source, amount, filters, and ordering
  • Source — Post Types, Related (items related to the current one), or ACF
    Relationship when ACF is active.
  • Include — which post types to pull from.
  • Amount — Posts per page, Total posts, and Offset.
  • Conditions — conditions drawn from the same catalog as element display and template
    targeting, narrowed to the ones that can filter a query. See
    Conditions Reference.
  • Meta Query — filter by custom field values, with nested groups for complex logic.
  • Order — Order By (Date, Last modified date, Title, Comments count, Menu order,
    Random — plus ACF and Meta Box when those plugins are active, each revealing a Field
    chooser) and Order (Descending or Ascending). Alongside it: a Date filter with
    Before Date / After Date, and toggles for Ignore current post, Ignore
    sticky posts
    , and Same author only.

Click Apply Query to commit.

Defaults, and archives

Leave the query untouched and the loop falls back to eight posts per page.

Inside an archive template, an untouched loop is special: it renders that archive's own
results
rather than a query of its own. That is what lets one archive template serve
every category — the loop inherits whatever WordPress already resolved for the request.
Give the loop a custom query and you override that inheritance.

Layout and Design

Use the Design tab to set the loop's layout and appearance. See Post Loop Builder layout and design controls.

Pagination

Use Content → Pagination to add numbered links, previous/next links, a Load More button, or infinite scroll. See Pagination.

Alternate Items and Empty Results

The Advanced popout under Repeated Block provides alternate and static items and an empty state.

Filter Bar

Content → Filter Bar adds front-end filter buttons built from a taxonomy.

  • Enable turns it on.
  • Type picks the taxonomy the buttons are built from.
  • All Filter adds a show-everything button, with a custom All Label.
  • Sort By orders the buttons: Name A–Z, Name Z–A, Term Order, or Count.
  • Hide Uncategorized drops that term from the list.

Filtering happens in the browser — the loop renders every matching post and the filter
shows and hides them, so it is instant but not a substitute for a query on a large
archive.

Enabling the Filter Bar hides the Pagination section: a loop uses one or the other, not
both.

Related selects posts through shared taxonomies under Include by; Same author only narrows that set. ACF Relationship reads posts selected in a relationship field. These sources discard the pagination page number; the Conditions section filters the Post Types source only.

Use Custom Query for the complete source, meta-query, order, and date controls; Text Query for fixed query arguments; or Array Query for PHP-generated arguments.

WP Grid Builder integration controls appear when that integration is available.

Troubleshooting

Pagination with Custom Queries in Archives isn't supported

Pagination does not work with a custom query inside an archive template. If the builder shows this error, either leave the loop's query unset to paginate the archive's results, or use a custom query without pagination.