> For the complete documentation index, see [llms.txt](https://docs.acpt.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.acpt.io/permissions-manager/custom-content-types.md).

# Custom Content Types permissions

Configure role-based access control for custom tables and table groups.

ACPT's CCT permission system lets you control which WordPress roles can read, create, update, and delete records in each custom table, and who can read or edit table groups.

## Accessing CCT permissions

You can reach the permissions configuration from two places:

1. **ACPT → Permissions Manager → Custom Content Types**
2. The **Permissions** button on the **View Table** or **View Table Group** page

## Table capabilities

Each table exposes four capabilities:

| Capability | Description                                          |
| ---------- | ---------------------------------------------------- |
| **read**   | View the records list and individual record details. |
| **create** | Add new records.                                     |
| **update** | Edit existing records.                               |
| **delete** | Delete records.                                      |

## Table Group capabilities

| Capability | Description                                                                  |
| ---------- | ---------------------------------------------------------------------------- |
| **read**   | View the table group and its tables in context (e.g. on a post edit screen). |
| **edit**   | Edit table group settings (name, location rules, display mode).              |

## Configuring permissions

1. Navigate to the permissions screen for a table or table group.
2. For each WordPress role, check or uncheck the capabilities you want to grant or deny.
3. Click **Save**.

<figure><img src="https://3235524095-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fiyf0tSKPgXiyoQ3zV3I6%2Fuploads%2Fgit-blob-45ef115ab0d16177539e2711eec71308a1084be4%2Fcct-table-permissions.png?alt=media" alt="Table permissions screen"><figcaption><p>Granting the Editor role read/create access on the movies table.</p></figcaption></figure>

ACPT applies the capability changes to WordPress roles immediately on the next `admin_init`.

## Default behaviour

When no permissions are configured, all logged-in WordPress users can perform all operations. Permissions are **opt-in** — only configure them when you need to restrict access.

## WordPress capability naming

ACPT registers the capabilities using this pattern:

```
{capability}_{tableName}
```

For a table named `movies`:

| ACPT capability | WordPress capability |
| --------------- | -------------------- |
| read            | `read_movies`        |
| create          | `create_movies`      |
| update          | `update_movies`      |
| delete          | `delete_movies`      |

These can be checked in your own code using the standard WordPress `current_user_can()` function:

```php
if (current_user_can('create_movies')) {
    // show the "Add movie" button
}
```

## See also

* [CCT Permissions](/custom-content-types/permissions.md) — overview of the permission model
* [Custom post types permissions](/permissions-manager/custom-post-types-permissions.md)
* [Meta fields permissions](/permissions-manager/meta-fields-permissions.md)
