Fields
v1.0.95An ACF-style content-modelling toolkit — build field groups with a drag-and-drop editor, register custom post types and taxonomies, and set location rules so groups appear as meta boxes on matching posts. 37 field types, nested containers, a keyless Google Map, JSON import/export, template tags and Elementor dynamic tags — all from one WPStack panel.
Overview
The Fields module lets you build custom field groups and attach them to any content — a lightweight, built-in take on ACF.
Create a field group, add fields with a drag-and-drop builder, and set location rules that decide where it shows. Matching posts get a meta box, values save as ordinary post meta, and you read them back with template tags or Elementor dynamic tags.
| Group | Location | Fields | Status |
|---|---|---|---|
Property details | Post type: Property | 9 fields | Active |
SEO meta | Post type: Post, Page | 5 fields | Active |
Team member | Post type: Team | 7 fields | Active |
Landing sections | Page template: Landing | 10 fields | Active |
What you can do
- Build field groups with a drag-and-drop field list
- Choose from 37 field types across six groups
- Nest fields in group, repeater, flexible content and clone containers
- Target content with location rules — post type, template, status or page
- Add a keyless Google Map field with address autocomplete
- Read values with template tags or Elementor dynamic tags
post meta, keyed by the field’s name — so your data stays portable and readable by any theme or query.Requirements & compatibility
Fields runs on any modern WordPress host with no external service.
| Requirement | Minimum | Recommended |
|---|---|---|
| WordPress | 6.0 | 6.5 or newer |
| PHP | 7.4 | 8.1 or newer |
| Editor | Classic editor | Meta boxes render on the classic editor |
| Elementor | Optional | For the Text & Image dynamic tags |
| Google Maps key | Optional | Only for the interactive map mode |
Installation & activation
Fields ships inside WPStack — switch it on per site from the modules panel.
Open the WPStack modules panel
In your WordPress admin, go to WPStack → Modules and find Fields.
Activate Fields
Flip the Fields toggle to on. A new Fields item appears in the WPStack menu.
Add a field group
Open WPStack → Fields → Add field group, name it, and add fields.
Set location rules
Under Location, choose where the group shows — post type, page template, status or a specific page.
Edit a matching post
Open a post the rules match, fill the meta box, and save. Then read the values in your theme or Elementor.
The field builder
A field group is a drag-and-drop list of fields. Click a field to edit it in a popover, set its width, and drag the handle to reorder.
Editing a field
Click a field to open its editor popover — a floating panel that never resizes the tile or pushes the other fields. Set the Label, the Field Name (the post-meta key), the Type, Instructions, a Default value, a Placeholder, prepend / append text, whether it is Required, and the width.
Field types
Thirty-seven field types, organised into six groups.
| Group | Types |
|---|---|
| Basic | text · textarea · number · range · email · url · password |
| Content | image · file · wysiwyg · oembed · gallery |
| Choice | select · checkbox · radio · button group · true / false |
| Relational | link · post object · page link · relationship · taxonomy · user |
| Advanced | google map · date picker · date-time picker · time picker · color picker · icon picker |
| Layout | message · accordion · tab · group · repeater · flexible content · clone · divider |
Nested containers
Four field types hold other fields, so you can model structured and repeatable content.
- Group — bundle related fields; the value is an associative array
- Repeater — unlimited repeatable rows; the value is an array of rows
- Flexible Content — pick from named layout blocks per row
- Clone — reuse a whole group, either seamlessly or nested under a name
Location rules
Rules decide exactly where a field group appears.
| Parameter | Matches on |
|---|---|
post_type | The post type being edited |
post_template | The selected page template |
post_status | Draft, published, and so on |
page | A specific page |
Meta boxes on your posts
Every matching post gets the group as a meta box on the classic editor.
- One meta box per matching active group
- Values save on save_post as post meta
- Emptied fields are cleared; nested containers store structured arrays
- Targeted at the classic editor editing screen
Google Map field
A map field that works with no API key — and can upgrade to interactive with your own.
Embed mode (default, keyless)
By default the field stores a location string and renders Google’s free embed map — no API key and no Google billing. Address autocomplete is powered by OpenStreetMap Nominatim.
Interactive mode (opt-in)
Add your own Google Maps key — via the SF_GOOGLE_MAPS_KEY constant, the sf_google_maps_api_key filter, or the field’s own key — to enable a draggable pin and Places, storing the address plus latitude, longitude and zoom.
Reading values (template tags)
Output field values in your theme with a small set of template tags.
// Print a value
sf_the_field( 'headline' );
// Return a value to work with
$price = sf_get_field( 'price' );
// All of a post's values
$all = sf_get_fields();sf_get_field( $name, $post_id )— return a single valuesf_the_field( $name, $post_id )— print a single valuesf_get_fields( $post_id )— return all of a post’s valuessf_update_field( $name, $value, $post_id )— set a value
Elementor dynamic tags
Bind field values into Elementor designs with no code.
Fields registers two Elementor dynamic tags in the WPStack Fields group — a Text tag and an Image tag. Pick one from any widget’s dynamic-tag picker and choose the field to bind.
Custom post types
Create and register real custom post types from a form — no code, no snippets plugin.
Give the post type a key and a singular and plural label — every other label is generated for you. Choose its options, pick what it supports, set a menu icon and position, and attach taxonomies. The post type is registered on init and its rewrite rules are flushed automatically, so archives and single URLs work straight away.
Options
| Option | What it controls |
|---|---|
key / slug | The post type name and its URL base. |
| Labels | Singular and plural; all admin labels are auto-generated. |
| Public | Whether the type is visible on the front end and in admin. |
| Hierarchical | Page-style parent/child structure instead of flat posts. |
| Has archive | Enables a post type archive at its slug. |
| Show in REST | Exposes it to the REST API and the block (Gutenberg) editor. |
| Menu icon & position | A dashicon and where it sits in the admin menu. |
| Rewrite slug | The permalink base for single entries. |
Supports
Toggle the core editor features the post type offers: title, editor, excerpt, featured image, custom fields, author, comments, revisions and page attributes.
init hook, and rewrite rules are flushed automatically when you add or change one — so archives and single-entry URLs resolve immediately, with no manual permalink re-save.Taxonomies
Register your own taxonomies and attach them to any post type — including the ones you build here.
Create a taxonomy with a key and labels, choose whether it is hierarchical (category-style, with parent/child terms) or flat (tag-style), and attach it to one or more post types.
| Option | What it controls |
|---|---|
key / slug | The taxonomy name and its URL base. |
| Labels | Singular and plural names shown across the admin. |
| Attach to | The post types this taxonomy applies to — including custom ones. |
| Hierarchical | Category-style terms with parents, or flat tag-style terms. |
| Public | Whether terms are queryable on the front end. |
| Show in REST | Exposes it to the REST API and the block editor. |
| Show admin column | Adds a column for the taxonomy on the post list table. |
| Rewrite slug | The permalink base for term archives. |
Import & export
Move a field group between sites with a portable JSON file, from the Tools tab.
Export
From WPStack → Fields → Tools, export a field group to a JSON file — its fields, settings and location rules are all included. Keep it as a backup or move it to another site.
Import
Import a JSON file to recreate the group as a new field group with fresh field keys. Nothing existing is overwritten — the import always adds a new group.
Open the Tools tab
Go to WPStack → Fields → Tools.
Export a group
Pick one or more field groups and download the JSON file.
Import on another site
On the destination site, upload the JSON file under Tools.
A new group is created
The group is recreated with fresh field keys, leaving any existing groups untouched.
Field group settings
Each group carries a handful of settings alongside its fields.
| Setting | Type | Default | What it does |
|---|---|---|---|
| Title | text | — | The group’s name, shown as the meta-box heading. |
| Location | rules | — | Where the group appears — post type, template, status or page. |
| Style | select | Default | How the meta box is presented on the edit screen. |
| Position | select | Normal | Where the meta box sits relative to the content. |
| Active | toggle | On | Inactive groups are kept but not rendered on any post. |
FAQ
Yes — Fields is an ACF-style builder built into WPStack. You create field groups, set location rules, edit values in meta boxes, and read them with template tags or Elementor dynamic tags.
No. The Google Map field works keyless in embed mode with address autocomplete. An API key is only needed for the optional interactive, draggable-pin mode.
As ordinary post meta, keyed by each field’s name. Nested containers store structured arrays. Renaming a field’s name orphans meta saved under the old name.
Yes — group, repeater, flexible content and clone are containers you can nest as deep as your content needs.
Changelog
init.sf_get_field, sf_the_field, sf_get_fields) and Elementor Text & Image dynamic tags.