A clear path
from idea to content.
Start with a group and a matching post. Add the tools your project needs as you go.
Install or upgrade
Install Free first. For an existing pair upgrading to 0.9, update Free and then Pro without uninstalling. Test the beta on staging and retain a database backup. Existing field names and stored values stay in place.
Build the editor
Use the shared Build, Publish and Move data navigation; Find a tool also opens with Alt+K. Open CustomFields, choose a starter kit or create a group, then select where it appears. Add fields, labels and instructions. The sample preview is temporary; save the definition and edit matching content to enter real values.
Structured groups, repeaters, galleries, flexible sections, options pages and reusable definitions are now Free features. Linked reusable definitions propagate through an explicit compatible-change review. Existing snapshots remain snapshots.
Connect the content
Content types creates post types and taxonomies. The Relationship field offers authorized search, multiple selection and optional inverse fields. Both sides need compatible scope and editing permissions. Conditions show or hide controls while retaining hidden stored values.
Publish blocks and listings
In Blocks & listings, create a named block and choose its editor controls. Find that name in the WordPress block inserter. Each inserted block stores its own content.
For a listing, choose a public content type, sort/filter, layout and fields to show. Add the CustomFields listing block, or use [customfields_listing id="your-listing"]. Only public published posts without password protection are included.
Elementor Free has CustomFields value and listing widgets. Dynamic tags require the applicable Elementor edition. No external builder licence is included.
Use a frontend form
[customfields_form group="group_key" post_id="123"]
[customfields_form group="group_key" mode="create" post_type="post"]Forms require a logged-in authorized editor. Creation makes an owned draft for review in WordPress. Anonymous submission, payment and email actions are not included.
Use the APIs
$value = customfields_get( 'project_title', get_the_ID() );
echo esc_html( (string) $value );User/term helpers and customfields_get_option() read registered fields for trusted template code. Authorize private data and escape output for its context. Authenticated post REST support is for editing; the plugin does not add a public metadata endpoint.
Move definitions deliberately
JSON schema import merges groups by key; schema files do not contain post content. Configure CUSTOMFIELDS_JSON_DIR to an existing private directory for reviewed two-way local sync. Database saves write back unless the file has unreviewed changes. CLI commands cover export, check and guarded import.
Convert existing content
Workflows can copy values and convert supported ACF/Secure Custom Fields and Meta Box structures across posts, users, terms and supported options storage, including supported Clone, Link and Map values, references and registered option prefixes. Choose fields and content in two short steps, then search the exact value review. Mobile comparisons use readable cards. Review source/destination changes before applying. Source metadata is preserved; rollback stops when newer destination edits would be overwritten. Unsupported settings and storage types are refused. This is not a universal automatic site migration.
Work with Pro
Agency workspace packages selected field groups, content types, taxonomies, blocks and listings together. Review dependencies and before/after changes, then confirm the target environment. Cross-site object IDs require explicit clearing. These JSON packages contain definitions. The separate Content & media tool copies selected posts and local attachments through a reviewed ZIP: deploy matching definitions first, explicitly map users/terms/external posts, then create new drafts. Credentials, table provisioning and remote server access are outside these workflows.
Bulk editor supports native per-post controls for simple and structured values. Replacement jobs capture up to 2,000 posts and process 25 at a time, with explicit review, pause, resume and guarded undo. Each chunk is atomic; a conflict stops the current chunk while earlier completed chunks remain visible. Approved preparation, application and undo can continue with the browser closed. Preparation stops for your approval before changes. WordPress Cron depends on site traffic; a server scheduler can invoke the optional WP-CLI runner on quiet sites. The plugin does not configure your server scheduler. Shared replacements with conditional children use the per-post editor instead.
Check before changing
Compare a local UTF-8 CSV in Free: choose a native post field group, map supported columns and inspect every row outcome. Fix issues manually or retain the task for a later Pro workflow. Installing Pro rechecks the source, schema and current values before a separate approval; a Free comparison never grants permission to write.
Content checks capture a bounded scope and show progress, findings, exclusions and unsupported fields. Continue through additional scopes using the manual control. Definition baselines compare field groups and known consumers; retained-value counts are bounded and external templates remain unknown. A completed scope is not a whole-site health certificate.
Save the checks you repeat
Pro maintenance adds deterministic supported business rules, opt-in local schedules, retained report history and field-group baselines. Corrections open the existing bulk review and require a separate approval. Reports describe observed work and known job status, with no invented time savings. This is local maintenance, not a remote fleet or managed feed service.
Reuse CSV update workflows
Choose an existing post field group, upload a UTF-8 CSV and map its columns, using a column of existing post IDs or an explicitly chosen unique supported native business-key field. Duplicate, ambiguous and unmatched keys require resolution; suggested mappings explain exact name/label matches. Save the mapping and prepare the before/after review. Approve the exact changes before background application; undo stops on later edits. Stage a replacement CSV through the page or the private local CLI command. Hourly/daily schedules prepare new staged input for review; they do not fetch remote spreadsheets or automatically approve new values.
Collect and approve submissions
Configure a public or signed-in form with supported plain/choice fields and up to five named steps. Use its shortcode on a page. New-entry forms keep submissions in a private queue and create drafts after approval. A separate change-request mode targets explicitly configured existing records and binds review to the original values and schema. Assign reviewers explicitly; the reviewer capability does not override WordPress content permissions. Signed-in contributors can follow their own status and revise returned entries. Anonymous correction access is not included. Keep existing Free logged-in forms for ordinary editing and draft creation. Complex nested/conditional fields, references and uploads are outside the initial Pro submission format. Notifications remain off until an administrator configures recipients and enables them; delivery uses that site’s mail service.
Link a development copy
Each production connection can include one copy. Create a 10-minute proof in the connected production site’s Updates & support screen. In Account, enter the proof, exact copy URL and explicit non-production declaration. Connect the copy with its 15-minute single-use key and separate service consent. Supported HTTPS hosts are exactly staging., dev. or test. followed by the full production hostname, with the same port and WordPress path. Other addresses need a production slot. This proves possession of the connection, not DNS control or intended use. Reconnecting/disconnecting the parent or rotating its account key also revokes its copy and pending keys.
Practical limits
- 100 field groups, 200 fields per group and 1 MB schema JSON.
- Three composite levels, 20 children per container, 100 rows and shared rendering/value limits.
- 50 objects per migration, five-object batches and a 2 MB journal; options are reviewed as a single destination.
- 20 controls per authored block; 50 block and 50 listing definitions; 40 listing items per page.
- Pro replacement jobs: 2,000 posts, 25 per chunk, five retained jobs and 32 MB of snapshots per job. Undo requires unchanged recorded values.
- Content transfer: 50 posts, 100 attachments, 8 MB per file and 32 MB of media. PHP ZIP/fileinfo and private temporary storage required. Unsupported blocks, reciprocal graphs and object-specific locations need separate handling.
- Optional custom storage retains a metadata mirror. Transactional paths require InnoDB.
- No complete compatibility claim for other plugins, themes or hosting environments.