Term Loops
The Term Loop Builder repeats a Component once per taxonomy term. Use it for a
category index, a tag cloud built from real markup, a "browse by type" row — anywhere
you want to show the groupings content is filed under rather than the content itself.
It shares the Repeated Block
machinery with the other loop elements, including
alternates and static items, the
empty state and
pagination. What differs is how it picks its terms.
Choosing the terms
Content → Query is short by design:

- Taxonomy — which taxonomy to list terms from. The dropdown is populated from every
taxonomy registered on the site. - Limit — the maximum number of terms to return.
- Hide Empty — skip terms that have no posts assigned.
That is the whole default path. Terms come back ordered by name, ascending; there is no
Order By control in this panel.
Note: the Taxonomy dropdown lists every registered taxonomy, which includes
WordPress internals like Navigation Menus, Link Categories and Pattern Categories
alongside your own. Pick from the ones you actually publish into.
There is no visual Query Builder here
Unlike the Post Loop, the Term Loop has no Query Builder
dialog. If Taxonomy, Limit and Hide Empty aren't enough, turn on Load Terms By Query
and write the query yourself: the toggle replaces the three controls with a Term Query
PHP editor.
Your code must return an array of
WP_Term_Query
arguments. Oxygen passes it straight to WP_Term_Query, so anything that class accepts
works — including the ordering the panel doesn't expose:
return [
'taxonomy' => 'category',
'orderby' => 'count',
'order' => 'DESC',
'hide_empty' => true,
'number' => 6,
];
This is the only way to reorder a term loop, and the only way to reach term meta queries,
parent/child filtering, or term inclusion and exclusion lists.
Note: the editor is not empty when you first open it — Oxygen pre-fills it with a
starter query that includes 'number' => 6. That's harmless while the toggle is off,
but the moment you switch to Load Terms By Query you inherit that limit. Change or
remove number unless six terms is what you want.
Binding to term data
Inside the repeated Component, bind to the Term dynamic data fields — Term Name, Term
Description, Term Permalink, Term Count, Term ID, and Term Custom Field. They resolve
against whichever term the loop is currently on, exactly as post fields resolve per post
in a Post Loop. See Fields Reference.
Caution: build the Component with term fields from the start. Pointing a Term Loop
at a Component that binds post fields — Post Title, Post Excerpt — does not render
empty text, it takes the page down with a critical error. The tempting shortcut is to
reuse an existing card, and every existing card is usually a post card. Duplicate it and
swap the bindings to Term fields before attaching it to a term loop.
Pagination
The Term Loop supports the full Pagination control set.
It pages by offsetting into the term list, so Limit doubles as the page size: with
pagination on and no Limit set, Oxygen uses 10 terms per page.
Because the Term Loop has no Filter Bar, its Pagination section is always available —
on the Post Loop, enabling the filter bar hides it.