Skip to main content

Facet Overview

Facets are controls that update one or more Facet Target result containers. A facet does not own the results. It sends a value for a shared target ID, the backend re-renders that target's stored Etch loop template, and the runtime swaps the returned markup into the target.

The basic structure is:

Search Facet, Select Facet, Radio List Facet, Checkbox List Facet, Map Facet, Pagination Facet, Load More Facet, Reset Facet
|
| shared target ID
v
Facet Target
|
v
Etch loop slot + fallback slot

One target can be controlled by many facets. The E2E scenarios combine post_type, category_name, tag, meta queries, date queries, ACF relationship filters, pagination, reset, load more, and map bounds against the same target. The combined result is an intersection unless a specific mode documents a different behavior.

What Authors Configure

Every useful facet setup needs three decisions:

DecisionWhere it livesWhat it controls
Target bindingFacet target and Facet Target targetWhich result container receives updates.
Argument modeFacet settings and mode-specific groupsWhich query clause the selected value becomes.
Authored valuesOption values, search input value, map bounds, pagination controlsThe value sent for that query clause.

The component family pages describe the markup and props for each family. The system pages explain how those props work together across families.

Component Families

Start Here

Read these pages in order when building a facet interface:

  1. How Facets Work for the request and target lifecycle.
  2. Argument Modes for the exact meaning of each mode.
  3. Shared Props for props shared across select, search select, radio, checkbox, and search.
  4. Availability, Counts, and Options for dynamic option state.
  5. Recipes for codebase-backed examples from the E2E scenarios.