WP Manifestindependent plugin directory
manifest / editor / curated-term-cards

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

0stars
0forks

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.zip

Readme

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 termId and taxonomy via 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, and core/term-count blocks 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

  1. Copy the plugin directory to wp-content/plugins/curated-term-cards/.
  2. Run npm install && npm run build (or use a pre-built build/ directory).
  3. Activate the plugin in Plugins → Installed Plugins.
  4. 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.

Project portfolio (custom taxonomy)

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.

Category highlights on an index page

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.

Tag cloud alternative

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.

Product attributes (WooCommerce or custom)

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.

Location or region directory

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.

Event sponsors or partners

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.

Read the full README on GitHub →