For the complete documentation index, see llms.txt. This page is also available as Markdown.

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:

  1. A valid ACPT license

  2. The Enable CCT setting to be turned on in ACPT → Settings → Content settings

See Getting started for activation steps.

In this section

Last updated