=== CustomFields.com – Fields & Content Builder ===
Contributors: customfields
Tags: custom fields, metadata, field groups, content modeling, json
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.1.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Create fields, repeaters and basic display in Free; add the visual directory/listing builder and configurable listing queries with Pro.

== Description ==

Current edition split (introduced in 0.10.6): Free includes all 26 field types, repeaters, storage, WordPress-admin editing, basic display, named blocks, normal WordPress search, developer APIs, migrations, JSON downloads/imports and history. Pro adds the visual directory/listing builder, configurable listing layouts and queries, reader search and the existing frontend and reviewed workflows. Existing saved listings keep rendering in Free; creating, changing or removing a listing definition requires activated Pro.

Install Free first, then matching Pro, without uninstalling. Missing or incompatible Pro leaves moved workflows unavailable; saved data and privacy operations remain. Existing saved content is retained. Pro now requires one initial licence activation; previously activated local use continues after ordinary expiry. Update checks remain a separate choice.


CustomFields.com Free is a complete local content-building toolkit for WordPress, currently in beta. No account or licence is needed.

* Consistent workspace navigation, searchable tool finder and optional guidance from fields to a private preview of real saved content.
* Read-only local CSV comparison with supported row outcomes, manual editor links and issue export.
* On-demand content checks, resumable scopes and read-only field-group baseline comparisons; coverage and unsupported fields stay visible.
* Visual Field Studio: starter kits, searchable types, focused editing, live sample forms, duplication, ordering, undo and keyboard saving.
* Twenty primitive, media and reference types, plus structured groups, repeaters, ordered galleries, flexible layouts, reusable groups and searchable relationships.
* Nested conditions and rich-text editing, with identity-aware preservation of hidden row values.
* Post, user, term and named site-options locations; delegated options-page permissions.
* Visual custom post type and taxonomy creation.
* Searchable multiple post/user/term references and maintained inverse relationships.
* Snapshot reusable definitions or linked definitions with reviewed compatible propagation.
* WordPress-admin editing and creation of content with registered fields.
* Custom block authoring with configurable controls, plus native field output blocks and bindings.
* Basic field output and named blocks remain Free. Existing saved listings continue rendering; the visual directory/listing builder, configurable listing layouts, filters, sorting and queries require Pro.
* Elementor field and listing widgets. A dynamic tag is available where Elementor supports dynamic tags.
* Native metadata by default; optional dedicated-table storage with a synchronized metadata compatibility mirror.
* PHP helpers, authenticated post-field REST integration and WP-CLI schema commands.
* JSON downloads and reviewed imports, read-only legacy definition files, schema history and guarded restoration.
* Reviewed content-copy workflows and supported ACF/Secure Custom Fields/Meta Box value conversions, with source preservation and rollback.
* Post-value revisions and per-user recovery drafts.

CustomFields.com Pro adds reviewed CSV updates, public/member submission forms with private approval, deployment packages, content/media transfers and approved background bulk editing, plus optional support access. Saved business rules, maintenance history and assigned content-change reviews also belong to Pro. Local content features remain in Free when Pro is disconnected or removed.

= Are the new checks useful without Pro? =

Yes. Compare a supported CSV, review every row outcome, export its findings and edit records manually. Content checks expose all supported findings in the captured scope, including required-value, configured-choice and known-reference problems. Continue through further scopes without upgrading. Baseline comparisons explain supported definition differences and bounded retained-value counts; external templates and unsupported fields are explicitly outside coverage. These tools do not write content.

= Does the optional guide publish anything or collect usage data? =

No. Use your fields carries your saved group into the next step, opens the permitted native editor and previews real saved values privately. Display instructions stay tied to the selected group and record; publication remains an explicit WordPress action. Choosing a goal or Explore on my own saves a local preference for this administrator on this site. The guide records progress after meaningful saves; viewing a preview alone does not mark the task complete. These preferences and progress stay on this site and do not subscribe you or register your domain. Optional completed-workflow counts start off; enabling them stores only allowlisted event counts by UTC day for up to 90 active days. Nothing is transmitted. Export and clear controls are available. The counts cannot establish purchases or a Free-to-Pro conversion rate.

== Installation ==

1. Upload and activate CustomFields.com – Fields & Content Builder.
2. Open CustomFields.com and create a field group with a starter kit or your own fields.
3. Choose where it appears and save. Follow Enter values to open matching content in its native editor.
4. Save those values in WordPress, then use the return link to preview saved data and follow the group-specific block, shortcode or template instructions.

For an existing installation using the customfields folder, upload the renamed Free ZIP, deactivate the earlier CustomFields Free plugin, then activate CustomFields.com and update Pro to the matching 1.1.2 release. Keep the earlier Free installation inactive. Saved definitions, content and options retain their original identifiers. Keep a database backup and test the update on staging. Do not uninstall to upgrade. Old Pro 0.4 with new Free is handled during the transition; an old Free with new Pro displays a dependency notice. Earlier installer bytes remain unchanged.

== Screenshots ==

1. Create and organise a field group in the Free workspace. Fictional project example.
2. Enter and save custom-field values in the WordPress editor. Fictional project example.
3. Display saved values with Free. Fictional content and a custom sample theme; the theme is not included.

== Frequently Asked Questions ==

= Does Free really include the structured fields? =

Yes. Groups, repeaters, galleries, flexible layouts, reusable groups, options pages, history and supported migrations are local Free features from 0.5. Pro adds repeatable content operations and submission approval workflows. There is no licence check on Free content tools.

= Is the live sample preview saved content? =

No. Its temporary values are separate from field definitions and real content. Large previews are shortened without changing your configured limits. Save the group and open matching content to enter real values.

= Where is the data stored? =

Definitions remain in customfields_groups. Ordinary values use post/user/term metadata; options values retain the legacy customfields_pro_values name for compatibility. Deactivation or removal preserves data. A removed/renamed definition does not delete old values.

Optional custom-table storage is explicitly provisioned in Storage and selected per supported group. The table is authoritative, with a mandatory native metadata mirror for queries, revisions and returning to metadata. This is not a metadata-footprint reduction feature. Backfill preserves native source values. Transactional paths require InnoDB. Inconsistent mirrors block supported writes instead of silently choosing a winner.

= What can Pro frontend forms do? =

The compatible Pro add-on supplies both authenticated frontend workflows. Free retains WordPress-admin editing and the general developer APIs.

[customfields_form group="group_key" post_id="123"] edits one matching group on an existing post for a logged-in authorized editor.

[customfields_form group="group_key" mode="create" post_type="post"] creates an owned draft, with a title and group values. The group must match the post type without specific-post or template restrictions. WordPress handles later publication. Anonymous submissions, arbitrary authors, checkout and email actions are not included. A creation receipt prevents identical retries from creating duplicate drafts.

= How do linked reusable definitions work? =

Existing clones remain reviewed snapshots. Linked mode references a source group, rejects cycles and uses the source's definitions. Source edits affecting linked consumers require Review linked updates. The review checks downstream compatibility and applies the source and consumers together. Saved values are never silently rewritten into a different structure.

= What do blocks and listings support? =

Blocks & listings creates distinct named blocks with up to 20 text, rich-text, number, choice, checkbox, image, email or URL controls and card, stack or banner presentation. Each inserted block keeps its own values. Templates are fixed trusted code; uploaded executable templates are not accepted.

Listings query public, published, non-password-protected content. Pro creates and configures listings: choose a content type, registered scalar field filter/order, taxonomy terms, display fields, layout and page size. Pro also supplies the interactive reader search box. Free preserves rendering of saved listing definitions. Select which custom fields visitors may see. Use the CustomFields.com listing block or [customfields_listing id="your-listing"]. Up to 50 definitions of each kind, 40 items per page and 12 displayed fields are supported.

= How does Elementor integration work? =

Elementor Free supports the CustomFields.com value and CustomFields.com listing widgets. The scalar dynamic tag uses Elementor's dynamic-tag API; using dynamic tags requires Elementor's own supported edition, normally Elementor Pro. No Elementor licence is included. No Bricks/Divi/Oxygen connector is claimed in this release.

= How do references and permissions work? =

Single-reference dropdowns retain their existing bounded selection behavior. The Relationship type provides authorized search, ordered multiple selection and optional reciprocal top-level fields. Configure matching object types/scopes and reciprocal identities. Reciprocal changes verify both sides and roll back if any required target cannot be edited. Relationships are not a way to bypass object or metadata permissions. Clearing an attachment value keeps its media file.

= What do location and condition filters support? =

Post groups match selected types, optionally restricted by post IDs and saved page templates. User groups appear on permitted profile screens. Term groups edit existing terms in selected taxonomies. Attachment, comment, menu and network-settings targets are not included.

Conditions support all/any rules and seven operators; nested rules reference sibling fields. Cycles are rejected. Hidden fields keep stored values. Visibility controls presentation, not authorization.

= How do I use PHP and REST? =

Use customfields_get('field_name', $post_id), customfields_get_object('field_name', 'user', $user_id), its 'term' equivalent, or customfields_get_option('field_name'). These trusted PHP helpers return unescaped values; authorize private output and escape for its context.

The [customfield name="field_name"] shortcode prints escaped scalar text with visibility checks. The Custom field block supports richer values.

REST-enabled post types expose authenticated edit-context customfields values for authorized editors. No public metadata endpoint is added. Omitted groups remain unchanged; included groups must contain active editable fields. Other plugins can expose metadata independently.

= How do local JSON and migration work? =

Use Definition files to download JSON through your browser or the field builder to review an import. Schema saves do not write files on the server. An existing CUSTOMFIELDS_JSON_DIR setting is supported only as a read-only legacy source for customfields-schema.json. Imports are explicit; exact file, schema and saved-value checks block stale reviews. Source files are never modified or executed.

Use wp customfields schema export, check <file>, or import <file>. CLI import applies only with --apply --expected-hash=<hash-from-check> and an administrator user. CLI replacement and local-file import replace the full registry; the ordinary JSON import screen merges by group key. Content remains stored.

Content migration is separate from schema import. Workflows supports posts, users, terms and explicitly registered default or custom-prefix ACF/SCF options pages; compatible scalars, nested groups, repeaters, flexible layouts, galleries and post/user/term references; supported Clone, Link and Google Map values converted to matching native groups; and supported Meta Box groups, scalar clones, clone_as_multiple, repeated collections, timestamp dates and taxonomy fields that load their effective terms. Source definitions, exact raw snapshots, compatible destinations and explicit review are required. Scalar clones use a repeater child named value. Options apply/undo checks the entire native container, including siblings. Source values remain intact; competitor-specific relationship graphs and templates are not rewritten. See the developer guide for adapter-specific limits.

A narrow Meta Box Custom Table adapter reads only a dedicated InnoDB table bound to one applicable active registry group, with an integer primary ID and direct field-ID column. Table names cannot be supplied in the migration form. Source rows are rechecked and locked during the destination transaction. This paid-extension adapter has contract-fixture qualification; the paid MB Custom Table/Group plugins were not installed for integration testing. This is not an automatic whole-site migration.

= How do recovery and history work? =

Per-user post recovery drafts retain valid field groups for up to 24 hours. Restore fills the editor for review and only works with matching schema and permissions. WordPress post revisions include field snapshots when revisions are enabled, with compatible-identity and permission checks on restoration. Schema history stores up to 20 snapshots within 4 MB; guarded restore scans up to 2,000 values. A blocked review leaves saved values intact.

= What are the limits? =

Schemas allow 100 groups, 200 fields per group and 1 MB JSON imports. Nested structures support three composite levels, 20 children per container, 100 rows and shared 4,000-value/render budgets. Runtime request limits can be smaller. Content migration is bounded to 50 objects, five-object batches and a 2 MB journal with an expiring review; options use a single destination. Rich text uses WordPress post-safe HTML. Numbers are finite floating-point values, not arbitrary-precision financial amounts. Date/time inputs do not convert timezones.

Incompatible existing values are locked for review, not truncated. Direct WordPress metadata writes by other code do not receive all form validation. Protected relationship/table writes add atomic storage handling; ordinary metadata writes retain WordPress behavior. Plugin validation does not replace a site-wide publication approval system.


= Can I explore Pro without installing it? =

Explore Pro has grouped, clearly labelled workflow previews with actual product screenshots using sample data and optional fictional examples. Opening a preview does not change content or contact a service. Contextual suggestions follow supported tasks and can be dismissed. Preview tabs can be hidden and restored for this administrator on this site. Choosing plans for a specific workflow stores its name and optional owned CSV comparison reference locally for seven days, so you can continue after activating Pro. A fresh review is still required before applying updates. Plan links open https://customfields.com/pricing/ without site details or referral tracking. Optional domain registration and confirmed email signup are separate choices; neither is required for Free.

== Changelog ==

= 1.1.2 =
* Publish matching Free and Pro 1.1.2 release metadata and installation guidance.
* Preserve the existing edition split, stored content, settings, licences and screenshot assets.
* Update Free first, then matching Pro, without uninstalling.


= 0.10.6 =
* Apply the launch edition split: move directory/listing authoring and configurable listing layouts/queries to the separate Pro add-on.
* Preserve saved listing rendering, all 26 field types, repeaters, storage, basic display and named blocks in Free.
* Keep initial-activation, earned local access after expiry, privacy, validation and concurrency protections.


= 0.10.5 =
* Improve narrow-screen field editing and expanded storage and identifier settings.
* Correct dark-mode contrast in comparisons, nested fields, publishing controls, notices and failed saves.
* Add clear feedback when a field-group search has no matches and restore tool-finder focus with one Escape.
* Clarify empty states, optional value storage, report status, comparison dates and singular/plural labels.
* Remove an empty preview form surface while keeping sample values separate from saved definitions.
* Refresh bundled guides and translations, and remove the stale Free beta badge in the native fallback. Compatible with Pro 0.10.4.

= 0.10.4 =
* Correct focused workspace margins and navigation for right-to-left WordPress layouts, including phone controls and keyboard navigation.
* Scope workflow locks to the database, site tables and relevant administrator so unrelated sites on shared database servers do not block each other.
* Verify ordinary metadata writes and report failures accurately; earlier fields may have saved, so review saved values before retrying.
* Resolve conditional visibility from sanitized controllers and retained hidden values before validating post, REST, options and frontend form saves.
* Carry the corrected listing-search and local-onboarding documentation into this release.

= 0.10.3 =
* Add focused first activation, a useful goal guide and independent optional domain and confirmed email choices.
* Add focused Pro previews with actual product captures, restrained contextual suggestions and locally remembered workflow handoff.
* Clarify licence activation and customer-specific next actions; retain existing activation, update and content safeguards.


= 0.10.2 =
* Require an explicit successful Pro licence activation for new Pro work, preserving activated offline use and saved content.
* Preserve Free editing and previews; prevent retained Pro deployment previews from bypassing activation.
* Pause approved Pro background work on disconnect, with an explicit resume choice after reactivation.


= 0.10.1 =
* Bundle readable JavaScript/CSS source and document the source layout.
* Clarify request authorization, typed input validation and safe recovery rendering.
* Preserve saved content and the 0.10.0 Free/Pro feature split.

= 0.10.0 =
* Separate launch Free/Pro workflows into their respective packages; preserve storage and authorization safeguards.


= 0.9.10 =
* Rename the plugin to CustomFields.com – Fields & Content Builder, with the customfields-com directory slug and translation domain. Preserve existing definitions, content, options and public APIs.
* Prevent the renamed Free plugin from loading alongside the legacy Free installation.
* Ignore the internal field-presence marker when redisplaying rejected multiple-choice submissions, avoiding a PHP notice or an unintended selected choice.

= 0.9.9 =
* Sanitize request nonces and retry controls while retaining exact stale-state protection and rich field values.
* Keep WordPress navigation visible by default, scope editor assets, and enqueue the no-JavaScript fallback style.
* Replace automatic server-side JSON exports with guarded downloads and read-only legacy imports.

= 0.9.8 =
* Keep newer edits unsaved until the next explicit Save by avoiding duplicate field writes from Gutenberg’s follow-up metabox request.
* Preserve newer field edits without a Gutenberg comparison error during saves, and wrap long recovery labels on small screens.
* Refresh Gutenberg custom-field value previews after a confirmed field save, while keeping newer unsaved edits intact.
* Prepare shared builder, block, recovery and workflow controls for WordPress translations without changing stored field keys.

= 0.9.7 =
* Clarify the Free edition footer and visibly identify local Pro previews in grouped navigation.
* Correct release and installation guidance in the bundled developer documentation.
* Avoid WordPress 6.5 block-wrapper notices in standalone saved-value previews while retaining native block styling.

= 0.9.6 =
* Connect saved field groups to native editing, private saved-value previews and specific display instructions without a separate goal-save step.
* Make Free member-form instructions available directly in Use your fields.
* Add bounded read-only checkpoints for matching Pro maintenance across larger post scopes.

= 0.9.5 =
* Bring field editing first, with compact placement controls and expandable storage settings.
* Use clearer task labels and show when Free already covers the work.
* Describe rich Pro submission eligibility while keeping older Pro editions within their supported format.


= 0.9.4 =
* Show Pro tools within their workflow categories, with quiet edition labels and local previews in Free.


= 0.9.3 =
* Redesign the plugin workspace with a focused sidebar, local theme choices and compact, expandable Pro examples.

= 0.9.2 =
* Make Pro benefits easier to compare, with practical local examples and a manual beta-access request link.

= 0.9.1 =
* Load linked-definition controls only on the field builder, avoiding missing-script dependency notices on other screens.
* Improve request validation, prepared SQL identifiers, translation context and malformed-upload handling.


= 0.9.0-beta.1 =
* Add optional real-content onboarding and a local next-action dashboard.
* Add private read-only CSV comparison and resumable content-quality checks.
* Add field-group baseline comparison, supported impact information and manual fixes.
* Tie optional Pro guidance to real supported tasks; add explicit local-only workflow measurement.


= 0.8.0-beta.1 =
* Keep all existing Free content tools and add a local Explore Pro guide with interactive examples.
* Add quiet, dismissible workflow suggestions and a per-site administrator display preference.
* Add shared navigation for Pro CSV and submission workflows.


= 0.7.0-beta.1 =
* Split migration setup, review and field history into focused views, with searchable mobile value comparisons.
* Add supported Clone, Link, Map, custom option-prefix, timestamp-date and taxonomy-value conversions.
* Preserve original source data and refuse ambiguous or lossy conversions.

= 0.6.0-beta.1 =
* Unify workspace navigation, styling, guided setup and local package-file review.
* Extend reviewed migration to supported user, term and options sources, references and Meta Box cloned values.
* Preserve source snapshots and destination recovery guards across the expanded targets.

= 0.5.0-beta.1 =
* Move all existing local Pro content tools into Free with preserved data keys and compatibility aliases.
* Add content types, taxonomies, searchable reciprocal relationships and optional dedicated storage.
* Add linked definitions and authenticated draft creation.
* Add custom block authoring, visual listings and Elementor widgets.
* Add reviewed local JSON synchronization and broader structured value conversion.

= 0.4.0-beta.1 =
* Interactive structured-field, media and rich-text previews when their extension is active; preview values stay separate from saved schemas.
* Preserve structured editing context across recovery drafts and block-editor saves.
* Matched companion release for the expanded Pro workspace.

= 0.3.0-beta.1 =
* Introduce the Field Studio with starter kits, searchable field selection, focused editing and a live form preview.
* Add readable choice editing, reversible field removal, drag ordering with keyboard controls, and keyboard saving.
* Save definitions without a page reload while retaining validation, permissions and stale-schema protection.
* Simplify group navigation and move storage settings into expandable sections.
* Refresh responsive styling with self-hosted fonts and reduced-motion support.

= 0.2.0-beta.1 =
* Expand Free to twenty field types, including media, rich text, multiple choices, references, and time/date-time.
* Add numeric/text constraints, visual conditions, user/term locations, and post ID/template filters.
* Add field duplication, search, collapse controls, and presets.
* Add native field output blocks/bindings and authenticated edit-context REST integration.
* Add valid-group recovery drafts, field revision snapshots, and supported-editor publication checks.
* Add optional local JSON export and explicit CLI schema validation/import workflows.
* Preserve incompatible stored values and unknown extension settings through validation locks.

= 0.1.0-beta.1 =
* Initial beta: visual field groups, nine core types, strict submission validation, JSON import/export, and extension hooks.

== Privacy ==

Free content tools need no account or external service. Goals, display preferences, private CSV comparisons, content checks and optional workflow counts remain on your WordPress site. Optional counts are off by default. A deliberately selected Pro workflow is remembered locally for seven days; preview visits are not tracked. Optional welcome choices are described separately below.

== Source code and development ==

The complete, readable PHP, JavaScript and CSS source is included in this plugin. The files under assets/ (including nested directories) are the editable source and are loaded directly by WordPress; there are no separate minified bundles or missing build inputs. No compilation, npm or Composer installation is required. See the bundled SOURCE.txt for source locations, editing and packaging steps, optional syntax checks, translation commands and dependency attribution.

Self-hosted DM Sans fonts are licensed under SIL OFL 1.1; see assets/fonts/OFL.txt. Font project source: https://github.com/googlefonts/dm-fonts


== Optional welcome service ==

After a meaningful save, CustomFields offers two independent, initially unchecked choices. You can continue without sharing and use every Free tool. Reopen Welcome choices from the plugin workspace at any time.

Domain registration sends only the displayed public hostname to https://customfields.com/newsletter-api/v1/customfields-welcome/ with a random connection identifier, authentication token, consent version and request timestamp. It does not send the full URL, WordPress/PHP versions, language, edition, field definitions or content. The registration expires after 90 days unless you explicitly refresh it. No background registration or status requests run. The server sees ordinary network connection information such as the source IP.

Email signup independently sends your entered email address and the same kind of consent/connection metadata to that service. Email-only signup does not attach the site domain in its payload or User-Agent. Inbox confirmation is required before new marketing email eligibility. An existing subscriber keeps their preferences; a submitted request does not guarantee a new confirmation email.

Use the separate Remove site registration and Stop these emails actions to withdraw a linked choice. Email withdrawal stops this connection's own confirmed signup; independently existing subscriptions remain managed through their email preference/unsubscribe links. Failed withdrawals retain a local retry option and do not silently resubmit enrollment. Deactivating or removing the plugin is not a remote unsubscribe request.

Local saved choices, the selected domain/email and protected request credentials remain in this WordPress database until you remove that choice. A matching WordPress personal-data erasure request can also remove the email choice; domain registration is independent. Remote expiry does not automatically erase the local record. A removal attempt immediately clears its local domain/email payload; a protected request credential and, for email retry matching, a keyed email reference can remain until remote removal is confirmed.

Domain records are retained for up to 90 days. Pending newsletter requests expire after 48 hours; confirmed subscriptions follow the newsletter retention policy. Withdrawal markers prevent delayed requests from reinstating withdrawn choices. These choices are independent of Pro licence activation and optional update checks.

Privacy: https://customfields.com/privacy/
Newsletter choices and retention: https://customfields.com/newsletter/privacy
Terms: https://customfields.com/terms/
