Plan a content model before building
Use this worksheet before opening Settings → POM Theme → Content model. Its purpose is to separate durable data decisions from labels and layouts that can change later.
Define the collection
| Decision | Example |
|---|---|
| Visitor purpose | Find and compare instructors |
| Singular label | Instructor |
| Plural label | Instructors |
| Machine slug | instructor |
| Public single pages | Yes |
| Public archive | Yes |
| WordPress search | Included |
| Required editor features | Content, thumbnail, excerpt |
The machine slug should be lowercase, contain no spaces or special characters, and avoid existing WordPress, theme, or plugin post type slugs. Treat it as permanent once content exists.
Design taxonomies
For each proposed taxonomy, record:
| Decision | Questions |
|---|---|
| Purpose | What reusable classification does it express? |
| Labels and slug | What do editors see, and what is the stable machine name? |
| Connected post types | Which collections use the vocabulary? |
| Archive | Should each term have a public archive? |
| URL hierarchy | Should child-term URLs include parent terms? |
| Page-backed base | Should archives live below an existing page branch? |
Create parent and child terms only when the hierarchy has lasting editorial meaning.
Define fields and consumers
For every field, identify both the input and the output:
| Field | Type | Required by | Empty-value behavior |
|---|---|---|---|
| Professional title | Text | Single template | Omit the row |
| Years of experience | Number | Result sorting | Treat as unavailable |
| Portrait gallery | Gallery | Single template | Hide the gallery |
| Related courses | Related posts | Single template | Hide the section |
Remove any field without a named consumer. Decide whether each value needs Quick edit, REST API exposure, or translation synchronization.
Plan templates and queries
Record:
- The single-entry template and its empty states
- The archive or Faceted Search result template
- The fields and taxonomies each template consumes
- Any reusable database query preset
- Sidebar, breadcrumb, and subheader requirements
POM Theme exposes dynamic template settings after an eligible custom post type has been saved. Build templates after representative entries and terms exist.
Plan access and URLs
State whether every visitor can see single entries. If not, define the allowed roles, purchases, or subscriptions and the denied-state result. A permission rule can select a fallback single template, but it does not replace WordPress capabilities or API authorization.
List the intended URLs before launch. Include:
- The post type archive
- A single entry
- A parent and child taxonomy term
- A taxonomy-based single URL, if used
- Every language version, if the site is multilingual
Approve the model
The model is ready to build when slugs are unique, every field has a consumer, taxonomy ownership is clear, public routes are agreed, and representative test content is available. Continue with Create a custom post type.