CMS & content · guide
Custom fields
Repeaters, flexible content, and options pages — everything ACF Pro does, built in.
Custom fields
Custom fields attach structured data to any content type. WordSafe ships the full ACF Pro feature set — no license, no upsell.
Create a field group
Content → Custom fields → New field group. A field group targets one or more content types (posts, pages, CPTs, users, taxonomies, or options pages).
Available field types
| Type | Notes |
|---|---|
| Text / textarea | Single-line and multi-line |
| Rich text | Same block editor as posts |
| Number / range | Min / max / step |
| Select / radio | Static options or dynamic from a taxonomy |
| True/false | Toggle with a label |
| Image / gallery | Pulls from Media library |
| File | Any MIME type |
| Link | Internal (route picker) or external URL |
| Relationship | Reference another post/CPT |
| Repeater | Repeatable rows of sub-fields |
| Flexible content | Repeater where each row picks a layout |
| Group | Namespace related fields |
| Date / time | With timezone |
Conditional logic
Every field can be shown/hidden based on other field values in the same group. Configure under the Logic tab.
Options pages
Global settings that aren't tied to a single piece of content — site-wide banners, footer copy, header CTAs. Create under Content → Options pages and reference from any template:
import { getOption } from "@wordsafe/sdk";
const footer = await getOption("footer-settings");
Reading fields in templates
import { getPost } from "@wordsafe/sdk";
const post = await getPost("hello-world");
const price = post.fields.price; // typed from your field group
Types are generated from your field groups on save — full autocomplete in the editor.
