Curated Term Cards
Display curated taxonomy term cards with customizable inner blocks for any taxonomy assigned to a post.
by carstenbach · github.com/carstingaxion/curated-term-cards
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/carstingaxion/curated-term-cards/archive/refs/heads/main.zipReadme
Curated Term Cards
A WordPress block that renders taxonomy terms assigned to a post as individually customisable cards with inner blocks.
Contributors: carstenbach
Tags: block, team, taxonomy, members
Tested up to: 6.8
Stable tag: 0.1.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Description
Curated Term Cards bridges any registered taxonomy with the block editor. When you add the block to a post, you select a taxonomy. The block then displays one Term Card for every term of that taxonomy assigned to the current post. Each card is a container for inner blocks, so the layout and content of every card is fully controlled in the editor.
The block works with core taxonomies (categories, tags) and any custom taxonomy registered with show_in_rest enabled.
Requirements
- WordPress 6.4+
- PHP 7.4+
Features
- Taxonomy-agnostic — choose any public taxonomy registered for the current post type.
- Inner blocks per card — each Term Card accepts arbitrary inner blocks (
core/paragraph,core/image,core/heading, custom blocks, etc.). - Context provider — Term Cards expose
termIdandtaxonomyvia block context, enabling child blocks to render term-specific data (name, description, count). - Included context-aware blocks — ships with
core/term-name,core/term-description, andcore/term-countblocks that consume the provided context. - Server-rendered — front-end output is generated via
render.php, always reflecting the current term data. - Inline term creation — create and assign new terms directly from the block without leaving the editor.
- Exclude control — hide specific assigned terms from the block instance without un-assigning them from the post.
- Archive linking — optionally wrap each card in a link to the term's archive page.
- Six block styles — Default, Spotlight, Mosaic, Orbit, Stacked, Glass.
- Responsive grid — column count controlled via a range control; adapts to smaller viewports automatically.
Architecture
carstingaxion/curated-term-cards (parent block — grid wrapper)
└─ carstingaxion/term-card (one per visible term — provides context)
└─ inner blocks (any blocks; ships with term-name, term-description, term-count)
The parent block reads assigned term IDs from the post entity via @wordpress/core-data, creates or removes carstingaxion/term-card inner blocks to match, and keeps them synchronised as terms are added or removed in the sidebar or inline form.
Each carstingaxion/term-card stores termId and taxonomy as attributes and exposes them through providesContext. Child blocks can consume these values to render term-specific content both in the editor and on the front end.
Block attributes
carstingaxion/curated-term-cards
| Attribute | Type | Default | Description |
|---|---|---|---|
taxonomy |
string | "" |
Taxonomy slug. Must be set before the block renders. |
columns |
number | 3 |
Number of grid columns (1–6). |
excludeTerms |
array | [] |
Term IDs hidden from this block instance. |
linkToArchive |
boolean | false |
Wrap each card in a link to the term archive. |
carstingaxion/term-card
| Attribute | Type | Default | Description |
|---|---|---|---|
termId |
number | 0 |
The taxonomy term ID for this card. |
taxonomy |
string | "team" |
Taxonomy slug (synced from parent context). |
Provided context
| Context key | Source attribute | Block |
|---|---|---|
taxonomy |
taxonomy |
carstingaxion/curated-term-cards |
carstingaxion/linkToArchive |
linkToArchive |
carstingaxion/curated-term-cards |
termId |
termId |
carstingaxion/term-card |
taxonomy |
taxonomy |
carstingaxion/term-card |
Bundled taxonomy
The plugin registers a hierarchical team taxonomy on post and page post types. This serves as a ready-to-use example but is not required — the block works with any taxonomy.
Installation
- Copy the plugin directory to
wp-content/plugins/curated-term-cards/. - Run
npm install && npm run build(or use a pre-builtbuild/directory). - Activate the plugin in Plugins → Installed Plugins.
- Insert Curated Term Cards from the block inserter.
Use cases
Team members (custom taxonomy)Register a team taxonomy (included by default). Assign team member terms to a page, then use the block with inner blocks for a portrait image (core/image), name (core/term-name), role (core/paragraph), and bio (core/term-description).
Each card links to the member's archive page when linkToArchive is enabled, creating a lightweight team directory without a custom post type.
Register a project taxonomy on your portfolio post type. Assign project terms to a landing page and use the block to display project cards with a featured image, title, and short description — all editable per card via inner blocks.
Select the built-in category taxonomy. Assign the categories you want to feature, then customise each card with an icon (core/image), the category name (core/term-name), a description (core/term-description), and the post count (core/term-count). Use the Exclude panel to hide categories you do not want on this particular page.
Select post_tag as the taxonomy. Assign relevant tags to a post or page, and the block renders each tag as a styled card. Use the Stacked block style for a compact, list-like layout, or the Glass style for a more visual presentation. Enable archive links so visitors can browse posts by tag.
If you have a custom taxonomy such as product_feature or product_line, assign terms to a product landing page. Each card can contain a feature icon, the term name, and a description — giving you a structured, editor-controlled feature grid without shortcodes or custom templates.
Register a hierarchical region taxonomy. Assign regions to a directory page and use the block to display each region as a card with a map image, region name, and description. The hierarchical structure of the taxonomy is preserved in the editor's term selector.
Register a sponsor taxonomy on an event post type. Assign sponsors to an event post. Each card can display a sponsor logo (core/image) and name (core/term-name), with an optional link to the sponsor's archive page listing all events they support.
Block styles
| Style | Description |
|---|---|
| Default | Clean cards with subtle border and hover lift. |
| Spotlight | Dark, cinematic cards with gradient overlays. |
| Mosaic | Asymmetric grid with alternating row spans. |
| Orbit | Centred layout with radial glow on hover. |
| Stacked | Full-width horizontal rows, alternating direction. |
| Glass | Frosted glass morphism with backdrop blur. |
All styles adapt their card backgrounds to an inherited parent background colour using color-mix(), so they work inside coloured Group or Cover blocks without manual overrides.
Development
npm install
npm run start # watch mode
npm run build # production build
The project uses a custom webpack.config.js to compile two entry points (index and term-card) and copy block.json and render.php files into the build/ directory.
License
GPLv2 or later. See LICENSE.