{"id":348445,"date":"2026-08-07T07:48:19","date_gmt":"2026-08-07T07:48:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/fieldforge\/"},"modified":"2026-10-25T05:33:27","modified_gmt":"2026-10-25T05:33:27","slug":"fieldforge","status":"publish","type":"plugin","link":"https:\/\/es-pr.wordpress.org\/plugins\/fieldforge\/","author":23513346,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.0","stable_tag":"1.2.0","tested":"7.1.3","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Field Forge \u2013 Custom Fields, Relational Fields & Builder","header_author":"Avakode","header_description":"Advanced custom fields with custom table storage, ACF compatibility, unlimited field groups, 31 field types (incl. relational), and a modern visual builder","assets_banners_color":"191d3d","last_updated":"2026-10-25 05:33:27","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/avakode.com","header_plugin_uri":"https:\/\/fieldforgewp.com","header_author_uri":"https:\/\/avakode.com","rating":0,"author_block_rating":0,"active_installs":10,"downloads":1183,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.25":{"tag":"1.0.25","author":"avakodeforge","date":"2026-08-07 07:47:49","revision":3637549},"1.0.26":{"tag":"1.0.26","author":"avakodeforge","date":"2026-08-12 20:11:14","revision":3643946},"1.0.27":{"tag":"1.0.27","author":"avakodeforge","date":"2026-08-13 12:51:11","revision":3645358},"1.0.30":{"tag":"1.0.30","author":"avakodeforge","date":"2026-09-02 09:52:23","revision":3677660},"1.0.32":{"tag":"1.0.32","author":"avakodeforge","date":"2026-09-09 15:59:24","revision":3688618},"1.0.33":{"tag":"1.0.33","author":"avakodeforge","date":"2026-09-09 21:28:25","revision":3689023},"1.0.34":{"tag":"1.0.34","author":"avakodeforge","date":"2026-09-10 10:20:43","revision":3689715},"1.0.35":{"tag":"1.0.35","author":"avakodeforge","date":"2026-09-10 10:24:26","revision":3689723},"1.0.37":{"tag":"1.0.37","author":"avakodeforge","date":"2026-09-18 15:51:31","revision":3702288},"1.0.38":{"tag":"1.0.38","author":"avakodeforge","date":"2026-09-29 22:52:03","revision":3719973},"1.0.39":{"tag":"1.0.39","author":"avakodeforge","date":"2026-10-01 08:23:53","revision":3722661},"1.0.40":{"tag":"1.0.40","author":"avakodeforge","date":"2026-10-05 10:37:12","revision":3728658},"1.0.41":{"tag":"1.0.41","author":"avakodeforge","date":"2026-10-06 21:27:14","revision":3731601},"1.1.0":{"tag":"1.1.0","author":"avakodeforge","date":"2026-10-10 11:32:56","revision":3737974},"1.1.1":{"tag":"1.1.1","author":"avakodeforge","date":"2026-10-11 15:40:44","revision":3739705},"1.1.2":{"tag":"1.1.2","author":"avakodeforge","date":"2026-10-11 20:49:00","revision":3740114},"1.1.3":{"tag":"1.1.3","author":"avakodeforge","date":"2026-10-11 23:42:48","revision":3740274},"1.1.4":{"tag":"1.1.4","author":"avakodeforge","date":"2026-10-12 01:08:25","revision":3740327},"1.1.5":{"tag":"1.1.5","author":"avakodeforge","date":"2026-10-12 10:35:48","revision":3741122},"1.1.6":{"tag":"1.1.6","author":"avakodeforge","date":"2026-10-12 15:30:07","revision":3741991},"1.1.7":{"tag":"1.1.7","author":"avakodeforge","date":"2026-10-17 20:31:40","revision":3752343},"1.1.8":{"tag":"1.1.8","author":"avakodeforge","date":"2026-10-23 21:36:07","revision":3762485},"1.2.0":{"tag":"1.2.0","author":"avakodeforge","date":"2026-10-25 05:33:27","revision":3763959}},"upgrade_notice":{"1.2.0":"<p>Still needs Field Forge Pro 1.1.5 or newer if you run the add-on; update Pro to 1.3.0 with it. Sites whose Pro licence has ended keep showing saved Pro fields. Stored values no longer double up (the database upgrades in the background); Local JSON Sync and the ACF import are more reliable.<\/p>","1.1.8":"<p>Security update. Still needs Field Forge Pro 1.1.5 or newer if you run the add-on, as before; update Pro to 1.1.16 at the same time for the GraphQL part of the fix. Related fields, totals and the REST endpoint no longer show private or password-protected data to visitors.<\/p>","1.1.7":"<p>Still needs Field Forge Pro 1.1.5 or newer if you run the add-on, as before. When AI credits run out, the message now links to the page where you buy credits.<\/p>","1.1.6":"<p>Still needs Field Forge Pro 1.1.5 or newer if you run the add-on, as before. Adds a Character limit for Text and Textarea, a Layout setting for Checkbox and Radio, and a template list for the Post Template rule. Limits in rows and on options pages need Pro 1.1.14. Nothing already saved is changed.<\/p>","1.1.5":"<p>Still needs Field Forge Pro 1.1.5 or newer if you run the add-on, as before. The rule editor gets Post Category and Post Taxonomy rules, and such rules imported from ACF now apply to the right posts. Importing a rule on a term with a non-Latin slug needs Pro 1.1.13. Nothing already saved is changed.<\/p>","1.1.4":"<p>Still needs Field Forge Pro 1.1.5 or newer if you run the add-on, as before. Sub-fields get Choices, Instructions and Placeholder, and ACF import carries Clone settings and settings pages. Row fixes for Repeater, Group and Flexible Content need Pro 1.1.12. Nothing already saved is changed.<\/p>","1.1.3":"<p>Still needs Field Forge Pro 1.1.5 or newer if you run the add-on. Renaming a field now shows its saved values under the new name at once, and a True\/False field with Default no, false or off starts switched off. Options Pages values moving on a rename need Pro 1.1.11. Nothing saved is changed.<\/p>","1.1.2":"<p>Still needs Field Forge Pro 1.1.5 or newer if you run the add-on. ACF import now converts Date Picker values to the format Field Forge uses; a Repeater in a new Flexible Content layout needs Pro 1.1.10. Nothing already saved is changed.<\/p>","1.1.1":"<p>Still needs Field Forge Pro 1.1.5 or newer if you run the add-on. The Cmd\/Ctrl + Shift + F shortcut for Add Field in the field group editor now works. Nothing already saved is changed.<\/p>","1.1.0":"<p>Still needs Field Forge Pro 1.1.5 or newer if you run the add-on. Local JSON Sync no longer reads the theme folder on its own; see the changelog for how to add it back. Saved field groups are not changed.<\/p>","1.0.41":"<p>Still needs Field Forge Pro 1.1.5 or newer if you run the add-on. The empty Field Groups list now points ACF users to the migration screen. Nothing already saved is changed.<\/p>","1.0.40":"<p>Deleting the plugin leaves the job queue shared by the Forge plugins alone while another one is still installed. If you run Field Forge Pro, it must be 1.1.5 or newer.<\/p>","1.0.39":"<p>Needs Field Forge Pro 1.1.5 or newer if you run the add-on: the licence screen moved into it, and an older add-on stays switched off until it is updated. Nothing already saved is changed.<\/p>","1.0.38":"<p>Still needs Field Forge Pro 1.1.0 or newer. The &quot;matches pattern&quot; condition no longer changes PHP settings while it runs; results are the same.<\/p>","1.0.37":"<p>Needs Field Forge Pro 1.1.0 or newer \u2014 an older add-on is switched off whole, so the Pro field types, Options Pages, REST and GraphQL exposure and AI actions stop until you update it. Nothing already saved is changed. Also fixes image-field buttons cut off in column layouts.<\/p>","1.0.36":"<p>Needs Field Forge Pro 1.1.0 or newer \u2014 an older add-on is switched off whole, so the Pro field types, Options Pages, REST and GraphQL exposure and AI actions stop until you update it. Nothing already saved is changed. Also fixes image-field buttons cut off in column layouts.<\/p>","1.0.35":"<p>Repairs nested Group, Repeater and Flexible Content records that older versions filed at the top level. Runs once, in the background, after the update.<\/p>","1.0.34":"<p>Fixes empty fields in the editor on sites migrated from ACF, and the blank page that followed the next Update.<\/p>","1.0.33":"<p>Fixes silent data loss: Group, Repeater and Flexible Content values were not saved from the post editor. Update, then re-save any compound field you edited since 1.0.25.<\/p>","1.0.17":"<p>Adds a Support menu and dashboard Pro tips. New Pro Calculation field + cross-post totals.<\/p>","1.0.16":"<p>Accessibility fix for the Button Group field (keyboard \/ screen-reader support).<\/p>","1.0.14":"<p>Licensing and WordPress.org compliance improvements.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3748971,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3748971,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3748971,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3748971,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.25","1.0.26","1.0.27","1.0.30","1.0.32","1.0.33","1.0.34","1.0.35","1.0.37","1.0.38","1.0.39","1.0.40","1.0.41","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4","1.1.5","1.1.6","1.1.7","1.1.8","1.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3637549,"resolution":"1","location":"assets","locale":"","width":1200,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3637549,"resolution":"2","location":"assets","locale":"","width":1200,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3637549,"resolution":"3","location":"assets","locale":"","width":1200,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3637549,"resolution":"4","location":"assets","locale":"","width":1200,"height":880},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3637549,"resolution":"5","location":"assets","locale":"","width":1200,"height":820}},"screenshots":{"1":"Field group editor","2":"Repeater field on post edit (Pro)","3":"Migration from ACF","4":"GraphQL schema preview (Pro)","5":"AI schema generator (Pro)"}},"plugin_section":[],"plugin_tags":[6410,2010,21028,9051,145281],"plugin_category":[],"plugin_contributors":[273812],"plugin_business_model":[],"class_list":["post-348445","plugin","type-plugin","status-publish","hentry","plugin_tags-builder","plugin_tags-custom-fields","plugin_tags-custom-table","plugin_tags-meta-fields","plugin_tags-relational-fields","plugin_contributors-avakodeforge","plugin_committers-avakodeforge"],"banners":{"banner":"https:\/\/ps.w.org\/fieldforge\/assets\/banner-772x250.png?rev=3748971","banner_2x":"https:\/\/ps.w.org\/fieldforge\/assets\/banner-1544x500.png?rev=3748971","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/fieldforge\/assets\/icon-128x128.png?rev=3748971","icon_2x":"https:\/\/ps.w.org\/fieldforge\/assets\/icon-256x256.png?rev=3748971","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/fieldforge\/assets\/screenshot-1.png?rev=3637549","caption":"Field group editor"},{"src":"https:\/\/ps.w.org\/fieldforge\/assets\/screenshot-2.png?rev=3637549","caption":"Repeater field on post edit (Pro)"},{"src":"https:\/\/ps.w.org\/fieldforge\/assets\/screenshot-3.png?rev=3637549","caption":"Migration from ACF"},{"src":"https:\/\/ps.w.org\/fieldforge\/assets\/screenshot-4.png?rev=3637549","caption":"GraphQL schema preview (Pro)"},{"src":"https:\/\/ps.w.org\/fieldforge\/assets\/screenshot-5.png?rev=3637549","caption":"AI schema generator (Pro)"}],"raw_content":"<!--section=description-->\n<p><strong>Field Forge<\/strong> is a modern custom-fields plugin. Fields live in dedicated tables (<code>wp_fieldforge_values<\/code>) instead of the bloated <code>wp_postmeta<\/code>, so listing pages stay fast even with 50+ fields per post. Drag-drop the field group editor, then read values via PHP or REST.<\/p>\n\n<h4>Free<\/h4>\n\n<ul>\n<li>Unlimited field groups<\/li>\n<li>31 field types \u2014 text, textarea, number, select, image, file, WYSIWYG, oEmbed, Gallery, Calculation, date\/time\/color pickers, Google Map, link, and the relational set (Relationship, Post Object, Page Link, Taxonomy, User)<\/li>\n<li>Location rules (post type, taxonomy, template, user role)<\/li>\n<li>ACF compatibility layer (import existing ACF groups + values)<\/li>\n<li>Custom-table storage (not <code>wp_postmeta<\/code>)<\/li>\n<li>Migration UI from ACF Free<\/li>\n<li>Visual field group builder<\/li>\n<li>Local JSON sync (write field groups to disk for version control)<\/li>\n<li>Options-page values via <code>get_field()<\/code> \/ <code>update_field()<\/code><\/li>\n<li>REST API field exposure<\/li>\n<li>Schema versioning + revision history for field groups<\/li>\n<\/ul>\n\n<h4>Field Forge Pro<\/h4>\n\n<p>Pro is a separate add-on plugin, distributed from https:\/\/fieldforgewp.com and not\nincluded in this download. Everything listed above is part of this plugin and works\nwithout it.<\/p>\n\n<ul>\n<li>Compound field types: Repeater, Group, Flexible Content, Clone<\/li>\n<li>Options pages management screen (creating and editing the pages themselves)<\/li>\n<li>PHP Blocks (register Gutenberg blocks from field groups)<\/li>\n<li>AI schema generator (describe the data \u2192 generates a field group)<\/li>\n<li>Native WPGraphQL schema + resolvers (no add-on plugin needed)<\/li>\n<li>TypeScript \/ JSON sync (export field groups to your repo)<\/li>\n<li>Bulk JSON export \/ import<\/li>\n<li>Priority email support with an active Pro licence<\/li>\n<\/ul>\n\n<p>Part of the <strong>Forge Suite<\/strong>: twelve WordPress and WooCommerce plugins by Avakode, including Lang Forge, Rank Forge and Form Forge.<\/p>\n\n<h3>External services<\/h3>\n\n<p>Every outbound request this plugin makes is listed below. Activating it, and opening its screens, contacts nobody.<\/p>\n\n<ul>\n<li><strong>oEmbed field.<\/strong> An oEmbed field asks WordPress to fetch the embed from the provider of the URL an editor enters, exactly as the block editor does: when the field's value is shown, in the preview under the field in the editor and wherever a theme or a plugin reads the field through the ACF-compatible <code>get_field()<\/code>, WordPress asks that provider's oEmbed address about the URL. The provider receives the URL and sees the network address of your server. Which provider that is depends on the URL; its terms and its privacy policy are its own. A site that uses no oEmbed field makes no such request.<\/li>\n<\/ul>\n\n<p>Apart from that this plugin contacts no external service of its own: field groups, values, Local JSON, the ACF importer and REST exposure all run on your site, and there are no analytics, no telemetry and no licensing calls. AI features belong to the separate Field Forge Pro add-on, which describes the services it uses in its own documentation.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload <code>fieldforge<\/code> to <code>\/wp-content\/plugins\/<\/code>, or install via Plugins \u2192 Add New.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to <strong>Field Forge \u2192 Field Groups \u2192 New Field Group<\/strong>.<\/li>\n<li>Read values in PHP: <code>$value = get_field('my_field', $post_id);<\/code><\/li>\n<li>Or via REST: <code>GET \/wp-json\/wp\/v2\/posts\/123\/fieldforge<\/code><\/li>\n<li>With the separate Field Forge Pro add-on, also via GraphQL: <code>posts { nodes { fieldforge { myField } } }<\/code><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20migrate%20from%20acf%3F\"><h3>Can I migrate from ACF?<\/h3><\/dt>\n<dd><p>Yes. Field Forge \u2192 Migration \u2192 ACF detects existing field groups + values and imports them into Field Forge tables. The ACF compat layer keeps your <code>get_field()<\/code> calls working during migration.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20admin%3F\"><h3>Will it slow down my admin?<\/h3><\/dt>\n<dd><p>The opposite \u2014 values are not autoloaded from <code>wp_postmeta<\/code>. Listing 100 posts with 50 fields each loads in ms instead of seconds.<\/p><\/dd>\n<dt id=\"is%20graphql%20support%20a%20separate%20add-on%3F\"><h3>Is GraphQL support a separate add-on?<\/h3><\/dt>\n<dd><p>No. Native WPGraphQL schema is built-in (Pro). You don't need \"WPGraphQL for ACF\" or similar bridge plugins.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>A site whose Field Forge Pro licence has ended keeps working. Repeater, Group, Flexible Content and Clone values and Options Page values that were saved before are still read and shown, and get_field() returns them as before. Adding, removing or changing those fields and Options Pages is closed until you renew; the other fields of the same group still save, and the editor says which fields are closed. With Field Forge Pro 1.2.0 the same holds for PHP blocks, GraphQL fields, export and code generation.<\/li>\n<li>Saved values are safer. A post can no longer hold two stored values for the same field: after the update the database is upgraded, duplicates that already exist are collapsed in the background (the one the site shows is kept, the rest are set aside in a separate table) and a unique key is added once that is safe. A value that already sits under a field's new name when you rename the field is set aside the same way, with a count after the save. Swapping or shifting field names in one save keeps every value, and a save that is refused or breaks off half way keeps them all.<\/li>\n<li>Field names that are the same apart from capital letters or accents are refused, and the message names both fields, because they would overwrite each other's values. A field name over 191 characters is refused with a plain message in the editor, the REST API and the ACF import.<\/li>\n<li>A refused database write while saving a Repeater, Group or Flexible Content field now stops the save instead of wiping the stored values of the post.<\/li>\n<li>Local JSON Sync now applies a file that differs from the field group it is linked to, compares a file the way it would be written (a file that only reorders choices or layouts is applied), and judges a group of this site by its content, not by the hash line in the file.<\/li>\n<li>A field group made from a Local JSON file of another site remembers that file, so Sync does not make another copy every time; the Sync screen names the groups a file was linked to and the groups it refused. Groups are announced and caches cleared only after the whole batch is saved, and deleting the plugin removes the links.<\/li>\n<li>ACF value import: Clone fields now bring their values (Seamless and Group, with and without prefixed names); a Message field keeps its text, new lines and escaping setting; a Textarea without a New Lines setting stays as it was; a stored object or a cut-off serialised value is skipped instead of saved. The result says how many field groups were created, updated and not imported, and which were created as new instead of updating an existing one. The Migration screen lists the importers that are active. Export All shows the server's message under the button when it is refused.<\/li>\n<li>ACF functions: get_field(), update_field() and delete_field() accept the key of a field. A user_N or term_N context keeps its own values in user and term meta instead of record 0, and a context that names no record reads and writes nothing. update_field() on a Repeater, Group or Flexible Content saves the rows the way the post screen does. get_field() and have_rows() read Repeater, Flexible Content and Group values saved under ACF's old meta keys (up to 1000 rows per field, nested levels included) and rows kept as one JSON text. A Relationship saved as comma text is read as a list, and a zero in a Group is a value.<\/li>\n<li>Option values read for another language (an ACF-style options_xx id) use the language's own value first and the default language when it has none. acf_register_block_type() and acf_register_block() are declared before acf\/init fires.<\/li>\n<li>Calculation fields read a minus sign in front of a value as the sign of it, in the saved result and in the live preview on the post screen.<\/li>\n<li>Conditional logic rules that use the operators &lt; and &lt;= are kept when a field group is saved.<\/li>\n<li>A Password sub-field in a Repeater row is a password box. A stored choice that is no longer in the list is still shown as picked. The value of a Relationship or Post Object field has the shape of its type and Multiple setting, not of the number of saved ids.<\/li>\n<li>Saving a field group over the REST API is checked: a missing title, a field without a name, fields that are not a list, a group over 1 MB, and Sub Fields or Layouts that are not lists at any depth are refused with a 400 that names the place. A stored value that is not a list reads as empty on the public read paths.<\/li>\n<li>Reading a list of posts with get_field() in a loop loads their field values in one query per batch of posts instead of one per post.<\/li>\n<li>The Settings screen has a \"Keep my data when Field Forge is deleted\" switch. Without it, deleting Field Forge or the Pro add-on from the Plugins screen removes field groups, values, Options Pages and settings, including the new set-aside values table. The Settings form saves without the Pro add-on.<\/li>\n<li>New messages are translated into the 15 languages the plugin ships with.<\/li>\n<li>Developers: FIELDFORGE_Field_Groups::begin_batch() and end_batch() let an add-on save several field groups in one transaction, and report_refused_move() lets it report a refused move of stored values.<\/li>\n<\/ul>\n\n<h4>1.1.8<\/h4>\n\n<ul>\n<li>Security: Related fields in the public REST API no longer expose private user data, unpublished posts or the content of password-protected posts. With Field Forge Pro 1.1.16 the same holds for GraphQL.<\/li>\n<li>Security: Field values of password-protected posts in the REST API are no longer shown to visitors who have not entered the password, and totals leave out password-protected posts unless you may edit others' posts of that type. With Field Forge Pro 1.1.16 the same holds for GraphQL.<\/li>\n<li>Security: Field values are no longer returned by the Field Forge REST endpoint to logged-in users who cannot edit the post, unless allowed with the fieldforge\/rest\/public_field_allowed filter.<\/li>\n<li>Developers: FIELDFORGE_Performance::instance()-&gt;flush_all() now also clears the values cache.<\/li>\n<\/ul>\n\n<h4>1.1.7<\/h4>\n\n<ul>\n<li>When AI credits run out, the message no longer promises a monthly reset and links to the page where you buy credits.<\/li>\n<li>The logo in the admin screens is the new mark.<\/li>\n<\/ul>\n\n<h4>1.1.6<\/h4>\n\n<ul>\n<li>Text and Textarea fields get a Character limit setting: the box stops at the limit, and a text over it is not saved. The field keeps its previous value and you see a notice. With Field Forge Pro 1.1.14 the limit also holds inside Repeater, Group and Flexible Content fields and on options pages.<\/li>\n<li>Character limits already stored in your field groups (an ACF import, the SEO Settings template) now take effect. A saved text that is already longer is kept, with a note under the field.<\/li>\n<li>Checkbox and Radio fields get a Layout setting: vertical or horizontal.<\/li>\n<li>The Post Template location rule offers a list of your theme's templates instead of a text box.<\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Field group editor: location rules can now be set by Post Category and Post Taxonomy term. Categories with the same name under different parents are listed as \"Parent \u203a Name\".<\/li>\n<li>Fixed: Post Category and Post Taxonomy rules imported from ACF now apply to the right posts. A rule on a term that no longer exists matches no post.<\/li>\n<li>Fixed: a rule on a term with a non-Latin slug is no longer broken when the group is saved in the editor.<\/li>\n<li>On the new-post screen, a field group with a Post Category or Post Taxonomy rule is shown only when the new post fits the rule (a new post counts as being in the default category). Before, such a group was shown on every new post of its post type when it also had a Post Type rule, and was not shown at all when it had none.<\/li>\n<\/ul>\n\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>With the Field Forge Pro add-on: the sub-fields of a Repeater, Group or Flexible Content field now have Choices, Instructions and Placeholder settings in the group editor, and the edit screen shows them. Choices work for Select, Checkbox, Radio and Button Group, Placeholder for Text, Textarea, Number, Email, URL and Password. Before, a Select, Checkbox or Radio sub-field was drawn as a plain text box and had nowhere to enter its choices. A sub-field of a choice type with no choices entered is still a text box.<\/li>\n<li>Button Group is now in the sub-field type list. In a Button Group sub-field only the picked button looks pressed, and \"Add Row\" starts the new row with nothing picked in Radio, Checkbox and Button Group sub-fields.<\/li>\n<li>A value a row already holds that is not one of the sub-field's choices (for example text saved while the sub-field was still a text box) is shown as one more picked choice, and Update keeps it. A stored list is shown as text in a Textarea sub-field and as a picked choice in a Radio or Select sub-field.<\/li>\n<li>Dragging a Repeater or Flexible Content row no longer clears the picked Radio or Button Group choice in the other rows.<\/li>\n<li>ACF import: Clone fields keep their settings and targets; a target that was not imported is left out and named in the result.<\/li>\n<li>ACF import with Field Forge Pro (licence active): settings pages made in ACF 6.2+ or registered in code while ACF is active are created, and the values step copies their values for regular, Group and Repeater fields. Values already saved in Field Forge, including a Repeater's row count, are kept. A page that could not be created is named in the result.<\/li>\n<li>ACF import without Field Forge Pro: Repeater, Group, Flexible Content and Clone fields are no longer created; the rest of the group is imported and the result lists what was left out. A group made only of such fields is not imported.<\/li>\n<li>Fixed: a Clone field whose target field sits in a later field group, or lower in its own group, no longer breaks field lookups.<\/li>\n<li>Fixed (with the Field Forge Pro add-on): a Group in a Flexible Content row added with \"Add Layout\" lost the values typed into it on the first Update.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>After you rename a field and save the group, the saved values on your posts now show under the new name right away. Before, they could keep showing under the old name for up to five minutes, until the short-lived cache expired. On a site with more than 2000 affected posts it can still take up to five minutes.<\/li>\n<li>A True\/False field whose Default is no, false or off (capitals and spaces around the word do not matter) is no longer shown switched on before its first save. Before, any text in Default switched it on, including \"no\". An empty Default or 0 still means off; any other text still means on.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Importing values from ACF now converts a Date Picker value from the format ACF stores (20261011) to the format Field Forge shows and saves (2026-10-11). Before, an imported date showed as an empty date box. Dates imported earlier are not changed.<\/li>\n<li>With the Field Forge Pro add-on (1.1.10 or newer): a Repeater inside a Flexible Content layout you have just added now appears at once with its Add Row button. Before, it was only a label, and rows could not be added to it in the editor. A Flexible Content field inside the new layout is drawn the same way.<\/li>\n<li>Changing the Label of a field that is already saved no longer changes its Name. Before, the Name followed the Label, and saving the group renamed the field. A field you have just added still takes its Name from its Label until you type a Name yourself, and typing a new Name in a saved field still renames it.<\/li>\n<li>A Date Picker value saved without dashes, such as 20261011 (the way ACF stores dates), is now saved as 2026-10-11 and shown in the date box. Before, the date box looked empty, and updating the post erased the date.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>The Cmd\/Ctrl + Shift + F shortcut for Add Field in the field group editor now opens the Add Field window. With Shift held the browser reports the key as a capital F, and the shortcut only recognised a small f, so nothing happened.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Local JSON Sync writes field group files only inside the uploads folder (uploads\/fieldforge-json by default) and no longer reads \/fieldforge-json on its own. Groups saved from the site are in the database and are not affected. Groups that exist only as JSON in the theme folder stay on disk but are not listed until you add the folder with the fieldforge\/local_json\/load_paths filter and sync. A save path outside uploads falls back to the default; files already there are not moved.<\/li>\n<li>The ACF importer asks ACF where its Local JSON folders are, instead of working out the theme folder itself.<\/li>\n<li>Adding a Flexible Content row (a field type of the Field Forge Pro add-on) no longer leaves an output buffer open when one of its field renderers fails.<\/li>\n<\/ul>\n\n<h4>1.0.41<\/h4>\n\n<ul>\n<li>The empty Field Groups list now says how many ACF field groups it found on the site and links to the migration screen. Only that screen, and only while the list is empty, looks for them, and only administrators see the note.<\/li>\n<\/ul>\n\n<h4>1.0.40<\/h4>\n\n<ul>\n<li>Deleting the plugin leaves the job queue the Forge plugins share in place while another Forge plugin or add-on is still on the site. The check used to miss add-ons, and Rank Forge installed from wordpress.org, so the queue could be dropped while a neighbour still had jobs in it.<\/li>\n<\/ul>\n\n<h4>1.0.39<\/h4>\n\n<ul>\n<li><strong>This release needs Field Forge Pro 1.1.5 or newer if you run the add-on.<\/strong> The licence screen, the upgrade prompt and the upgrade banner moved into the separate Field Forge Pro add-on; this plugin only notes which screens the add-on provides, with a link to its product page. An older add-on stays switched off until it is updated: the Pro field types, Options Pages, the REST and GraphQL exposure and the AI actions stop, nothing already saved is changed, and an admin notice names both versions.<\/li>\n<li>The Options Pages screen and the JSON export and import on the Tools screen say that they belong to the add-on instead of showing a locked page.<\/li>\n<\/ul>\n\n<h4>1.0.38<\/h4>\n\n<ul>\n<li>The \"matches pattern\" condition no longer changes PHP's regular-expression limits while it runs. A pattern that would run away is still stopped by PHP and treated as not matching.<\/li>\n<li>Options Pages management and the clone field check for the Field Forge Pro add-on at every place they use it. Nothing changes on a site with or without it.<\/li>\n<\/ul>\n\n<h4>1.0.37<\/h4>\n\n<ul>\n<li>No change in this package: the release updated parts that ship only in the edition distributed through avakode.com.<\/li>\n<\/ul>\n\n<h4>1.0.36<\/h4>\n\n<ul>\n<li><strong>This release needs Field Forge Pro 1.1.0 or newer.<\/strong> An older add-on is switched off whole rather than left running, because beside this core it would be present and wrong rather than absent. Until you update it the Pro field types Repeater, Group, Flexible Content and Clone, Options Pages, the REST and GraphQL exposure and the AI actions are unavailable. Nothing already saved is changed, an admin notice names both versions and what stopped, and installing the current add-on brings all of it back.<\/li>\n<li>Deleting the last Forge product on a site now clears the job queue the Forge plugins share \u2014 its table, its two scheduled events and its version marker. While any other Forge product is still installed, deleting this one leaves the queue exactly as it is, because the pending jobs in those rows are that product's too.<\/li>\n<li>Fixed: in a group laid out in columns, the buttons under an image field ran past the column and the \"Remove\" button was cut in half. They wrap now, and the preview never outgrows the column it sits in.<\/li>\n<\/ul>\n\n<h4>1.0.35<\/h4>\n\n<ul>\n<li>Fixed: posts saved by 1.0.25\u20131.0.33 could hold a nested Group, Repeater or Flexible Content as a separate top-level field, which left it out of its parent group in the editor. Updating moves those records back where they belong, in the background. The repair only moves a record whose parent is unambiguous and already on the post; anything it cannot prove it leaves exactly as it is.<\/li>\n<\/ul>\n\n<h4>1.0.34<\/h4>\n\n<ul>\n<li>Fixed: on a site migrated from ACF the post editor drew every custom field empty while the site itself still rendered the values, and pressing Update then blanked the page. The editor now reads the same values the site reads, and the first save moves them into Field Forge's own storage.<\/li>\n<li>Fixed: a Repeater, Group or Flexible Content nested inside a group could be saved as a separate top-level field, so it disappeared from its parent.<\/li>\n<\/ul>\n\n<h4>1.0.33<\/h4>\n\n<ul>\n<li>Fixed: values in a Group, Repeater or Flexible Content field were dropped when a post was saved from the editor \u2014 an image picked into a group showed its preview and was empty again after Update. Simple fields were never affected. Introduced in 1.0.25; if you saved compound fields since then, re-enter and save those values once.<\/li>\n<\/ul>\n\n<h4>1.0.32<\/h4>\n\n<ul>\n<li>No change in this package: the release updated parts that ship only in the edition distributed through avakode.com.<\/li>\n<\/ul>\n\n<h4>1.0.31<\/h4>\n\n<ul>\n<li>Smaller package and one less admin surface: the SDK\u2019s own menu, opt-in screen and promotional notices are gone.<\/li>\n<\/ul>\n\n<h4>1.0.30<\/h4>\n\n<ul>\n<li>No change in this package: the release updated parts that ship only in the edition distributed through avakode.com.<\/li>\n<\/ul>\n\n<h4>1.0.29<\/h4>\n\n<ul>\n<li>No change in this package: the release updated parts that ship only in the edition distributed through avakode.com.<\/li>\n<\/ul>\n\n<h4>1.0.28<\/h4>\n\n<ul>\n<li>The shared inline assets (docs link, feedback widget) are now emitted as a literal nowdoc block instead of being assembled in an output buffer \u2014 the same hardening Lang Forge 1.0.31 and Rank Forge 1.1.3 received.<\/li>\n<li>Lang Forge is detected by its current class name (LANGFORGE_Core), so field-value language sync, the migration helper and the shared dashboard cards keep working with Lang Forge 1.0.31 and later.<\/li>\n<\/ul>\n\n<h4>1.0.27<\/h4>\n\n<ul>\n<li>Declares support for WordPress 7.1. Checked against 7.1-RC3: the field-group builder's drag-and-drop still works there, jQuery UI having gone to 1.14.2.<\/li>\n<li>The sibling plugin formerly called SEO Forge is now Rank Forge, so the shared Forge screens and the cross-links name it correctly.<\/li>\n<\/ul>\n\n<h4>1.0.26<\/h4>\n\n<ul>\n<li>The directory listing now names what the plugin does alongside the brand, matching how Lang Forge is listed. The plugin, its folder and its URL are unchanged \u2014 only the displayed title.<\/li>\n<\/ul>\n\n<h4>1.0.25<\/h4>\n\n<ul>\n<li>Fixed a database error printed on every activation. The longtext and text columns were declared with DEFAULT '', which MySQL does not allow on BLOB\/TEXT, so dbDelta kept trying to set it and failed loudly. Found by activating with WP_DEBUG on a clean install.<\/li>\n<\/ul>\n\n<h4>1.0.24<\/h4>\n\n<ul>\n<li>Local JSON now writes only to the uploads directory. A theme folder is no longer a write target even when the developer created one \u2014 wp-content\/themes is not a location a plugin may write to. Files already committed under a theme are still read, so existing setups keep working; a filtered save path that points at a theme, plugin or core directory falls back to uploads.<\/li>\n<li>The metabox save path no longer passes the whole request array on. Only this plugin's own submitted values are read, reduced to the fields that belong to the post, and each is sanitized by its declared field type before anything downstream sees it.<\/li>\n<li>Renamed the two ACF-migration options off the reserved \"<em>fdf<\/em>\" prefix onto \"fieldforge_\". Existing values, including the ACF-group id map, are carried over by a schema migration, so a site that already imported from ACF does not re-import duplicates.<\/li>\n<li>ACF's own hooks are consulted only when ACF is actually active.<\/li>\n<\/ul>\n\n<h4>1.0.23<\/h4>\n\n<ul>\n<li>The Gallery field and the Calculation field are now part of this plugin with no restriction. Both were marked Pro while their implementations shipped here, which meant built-in functionality was gated \u2014 that was wrong and is fixed.<\/li>\n<li>Options-page values, the Import \/ Export screen and the ACF importer are likewise unrestricted. Nothing shipped in this download is withheld any more: features that genuinely belong to the separate Pro add-on are detected by whether that plugin is installed, not by a licence check.<\/li>\n<li>Field definitions received over AJAX and REST are now sanitized key by key before storage, instead of only their conditional-logic block.<\/li>\n<li>oEmbed previews are escaped at the output site with an explicit tag allowlist.<\/li>\n<li>Local JSON now writes to the uploads directory by default and never creates a directory inside a theme. An existing \/fieldforge-json is still used when the developer has created one.<\/li>\n<li>Admin CSS moved out of inline <\/li>\n<li>Removed the red counter bubble on the License menu item \u2014 it reused core's update-notification styling.<\/li>\n<li>Field-group schema REST reads now require manage_options, and the aggregate endpoint no longer accepts an arbitrary post status.<\/li>\n<li>Dropped the manual text-domain loading call; WordPress loads the translations by itself.<\/li>\n<\/ul>\n\n<h4>1.0.22<\/h4>\n\n<ul>\n<li>Security hardening: all dynamic output is now escaped late at the output site with the context-appropriate function (esc_html\/esc_attr\/esc_url, esc_html__ for translated strings used as format strings, and wp_kses for trusted pre-built admin\/field markup). No behavioural changes.<\/li>\n<\/ul>\n\n<h4>1.0.21<\/h4>\n\n<ul>\n<li>Local JSON sync is now available on the Free plan (like ACF's Local JSON) \u2014 enabled by the setting alone, no license required.<\/li>\n<li>ACF value migration (importing existing ACF field values) is now available on the Free plan.<\/li>\n<li>Field values are now exposed on the standard REST post endpoints for every plan (opt-in per field).<\/li>\n<li>Removed the leftover license-gated field-group count limit and its \"locked\" UI \u2014 Free has always supported unlimited field groups.<\/li>\n<\/ul>\n\n<h4>1.0.17<\/h4>\n\n<ul>\n<li>New: Support menu item that opens the Avakode support dashboard.<\/li>\n<li>New: Contextual, dismissible Pro feature tips on the plugin dashboard (Free users only).<\/li>\n<li>New (Pro): Calculation field \u2014 compute a total from a formula over sibling fields ({price} * {qty}) or by summing a numeric sub-field across repeater rows, with number\/currency\/percentage formatting and a live per-keystroke preview.<\/li>\n<li>New (Free): [fieldforge_total] shortcode and fieldforge_aggregate_field() to total a numeric field across posts; REST \/aggregate and GraphQL fieldForgeAggregate (Pro).<\/li>\n<\/ul>\n\n<h4>1.0.16<\/h4>\n\n<ul>\n<li>Accessibility: Button Group field radios are now keyboard- and screen-reader-accessible. They were hidden with <code>display:none<\/code>, which removed them from the tab order and accessibility tree; they are now visually hidden the accessible way (the visible button label still toggles the selection).<\/li>\n<\/ul>\n\n<h4>1.0.14<\/h4>\n\n<ul>\n<li>WordPress.org compliance and licensing hardening.<\/li>\n<li>Pro entitlement is now resolved by the Field Forge Pro add-on; the free plugin bundles no licensing SDK.<\/li>\n<li>readme metadata cleanup.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Custom fields, ACF compatible, unlimited groups: custom-table storage and 31 field types including relational. ACF and Pods alternative.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/348445","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=348445"}],"author":[{"embeddable":true,"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/avakodeforge"}],"wp:attachment":[{"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=348445"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=348445"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=348445"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=348445"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=348445"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/es-pr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=348445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}