Introduction
Store and manage custom structured data with your own database tables.
Custom Content Types (CCT) let you define fully custom database tables — with your own columns, indexes, and foreign keys — and manage records through a clean admin interface, a REST API, or programmatically via PHP functions.
Unlike meta fields (which store values in wp_postmeta), CCT creates dedicated MySQL tables for structured relational data. This is ideal for:
Large data sets that need to be queried efficiently
Data that does not map neatly to WordPress posts, terms, or users
Relational data with foreign key constraints
Custom REST API endpoints for front-end or headless projects
Architecture overview
CCT is built on a two-tier model:
TableGroup ──▶ Table ──▶ Records
(location & (schema: (individual
visibility) columns, rows of data)
indexes,
foreign keys)Table Group
A Table Group is a container that controls where and how its tables are surfaced in the WordPress admin. You define location rules (e.g. "show for post type movie") and a display mode (tab panel, accordion, etc.).
Table
A Table defines the actual database schema: column names and types, indexes, and foreign key constraints. One table belongs to one table group.
Records
Records are individual rows of data stored in the custom table. They are created, updated, and deleted via the admin UI, the REST API, or PHP.
Feature gate
CCT requires:
A valid ACPT license
The Enable CCT setting to be turned on in ACPT → Settings → Content settings
See Getting started for activation steps.
In this section
Last updated