Skip to content

Commit e8e3a26

Browse files
committed
feat: update plugin version to 0.4.0 and enhance installation instructions with WordPress.org link
1 parent 1f86f19 commit e8e3a26

File tree

8 files changed

+111
-101
lines changed

8 files changed

+111
-101
lines changed

openfields-next/src/app/(docs)/docs/installation/page.client.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export default function InstallationPageClient() {
4343
<section className="space-y-4">
4444
<h2 className="text-xl font-semibold">Manual Installation</h2>
4545
<ol className="list-decimal list-inside space-y-2 text-muted-foreground">
46-
<li>Download the plugin from <a href="https://github.com/novincode/openfields/releases" className="text-primary hover:underline" target="_blank" rel="noopener noreferrer">GitHub Releases</a></li>
46+
<li>Download the plugin from <a href="https://wordpress.org/plugins/codeideal-open-fields/" className="text-primary hover:underline" target="_blank" rel="noopener noreferrer">WordPress.org</a> or <a href="https://github.com/novincode/openfields/releases" className="text-primary hover:underline" target="_blank" rel="noopener noreferrer">GitHub Releases</a></li>
4747
<li>Upload the <code className="bg-muted px-1.5 py-0.5 rounded text-sm">openfields</code> folder to <code className="bg-muted px-1.5 py-0.5 rounded text-sm">/wp-content/plugins/</code></li>
4848
<li>Activate through the Plugins menu in WordPress</li>
4949
</ol>

openfields-next/src/components/sections/download.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,11 @@ export function DownloadSection() {
5555
<p className="text-sm text-muted-foreground mb-4 flex-1">
5656
Install directly from your WordPress dashboard.
5757
</p>
58-
<Button variant="secondary" className="w-full" disabled>
59-
<span>Coming Soon</span>
58+
<Button variant="secondary" className="w-full" asChild>
59+
<a href={DOWNLOAD_LINKS.wordpress} target="_blank" rel="noopener noreferrer">
60+
<span>Install from WordPress.org</span>
61+
<RiArrowRightLine className="size-4" />
62+
</a>
6063
</Button>
6164
</div>
6265
</div>

openfields-next/src/lib/data.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ export const SPONSOR_TIERS = [
104104

105105
export const DOWNLOAD_LINKS = {
106106
github: "https://github.com/novincode/openfields",
107-
wordpress: "#", // Coming soon
107+
wordpress: "https://wordpress.org/plugins/codeideal-open-fields/", // Live on WordPress.org
108108
releases: "https://github.com/novincode/openfields/releases",
109109
} as const;
110110

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "openfields",
3-
"version": "0.3.0",
3+
"version": "0.4.0",
44
"type": "module",
55
"description": "Modern custom fields builder for WordPress. Create and manage custom field groups with an intuitive interface.",
66
"author": "Codeideal",

plugin/assets/admin/js/block-editor.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,12 @@
4848
{ value: 'image', label: __( 'Image', 'openfields' ) },
4949
];
5050

51-
registerBlockType( 'openfields/field', {
52-
title: __( 'OpenFields Field', 'openfields' ),
53-
description: __( 'Display a custom field value.', 'openfields' ),
51+
registerBlockType( 'cofld/field', {
52+
title: __( 'Open Fields', 'codeideal-open-fields' ),
53+
description: __( 'Display a custom field value.', 'codeideal-open-fields' ),
5454
category: 'widgets',
5555
icon: 'forms',
56-
keywords: [ 'field', 'custom', 'meta', 'acf', 'openfields' ],
56+
keywords: [ 'field', 'custom', 'meta', 'acf', 'openfields', 'open fields' ],
5757
supports: {
5858
html: false,
5959
align: true,
@@ -117,7 +117,7 @@
117117
blockProps,
118118
fieldName
119119
? el( ServerSideRender, {
120-
block: 'openfields/field',
120+
block: 'cofld/field',
121121
attributes: attributes,
122122
EmptyResponsePlaceholder: function() {
123123
return el(

plugin/codeideal-open-fields.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
* Plugin Name: Codeideal Open Fields
44
* Plugin URI: https://openfields.codeideal.com
55
* Description: Modern custom fields builder for WordPress. Create and manage custom field groups with an intuitive interface.
6-
* Version: 0.3.0
6+
* Version: 0.4.0
77
* Requires at least: 6.0
8+
* Tested up to: 6.9
89
* Requires PHP: 7.4
910
* Author: Codeideal
1011
* Author URI: https://codeideal.com
@@ -22,7 +23,7 @@
2223
}
2324

2425
// Define plugin constants.
25-
define( 'COFLD_VERSION', '0.3.0' );
26+
define( 'COFLD_VERSION', '0.4.0' );
2627
define( 'COFLD_PLUGIN_FILE', __FILE__ );
2728
define( 'COFLD_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
2829
define( 'COFLD_PLUGIN_URL', plugin_dir_url( __FILE__ ) );

plugin/includes/class-cofld-block.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public function register_block() {
5555

5656
register_block_type( 'cofld/field', array(
5757
'api_version' => 2,
58+
'title' => 'Open Fields',
5859
'editor_script' => 'cofld-block-editor',
5960
'render_callback' => array( $this, 'render_block' ),
6061
'attributes' => array(

plugin/readme.txt

Lines changed: 94 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -4,145 +4,150 @@ Donate link: https://codeideal.com
44
Tags: custom fields, meta fields, field builder, post meta, custom meta
55
Requires at least: 6.0
66
Tested up to: 6.9
7-
Stable tag: 0.3.0
7+
Stable tag: 0.4.0
88
Requires PHP: 7.4
99
License: GPLv2 or later
1010
License URI: https://www.gnu.org/licenses/gpl-2.0.html
1111

12-
Modern custom fields builder for WordPress. Create and manage custom field groups with an intuitive, developer-friendly interface.
12+
A free, modern custom fields plugin for WordPress. Build field groups with a visual editor — no code required.
1313

1414
== Description ==
1515

16-
Codeideal Open Fields is a powerful, lightweight, and 100% open-source custom fields plugin for WordPress. Add custom fields to posts, pages, custom post types, taxonomies, and users with an intuitive, modern interface for creating field groups and managing custom data.
16+
**Codeideal Open Fields** lets you add custom fields to posts, pages, custom post types, taxonomies, and users. The admin interface is built with React and TypeScript — fast, responsive, and intuitive.
1717

18-
= Source Code & Build Instructions =
18+
All features are free. No premium tier. No locked functionality.
1919

20-
The admin interface JavaScript (`assets/admin/js/admin.js`) and CSS (`assets/admin/css/admin.css`) are compiled from uncompressed source code. All other JavaScript and CSS files in the plugin are uncompressed and human-readable.
20+
= Quick Start =
2121

22-
**Public source repository:** [https://github.com/novincode/openfields](https://github.com/novincode/openfields)
22+
`get_field( 'my_field' )` — retrieve any field value.
2323

24-
**Source files location:** The uncompressed React/TypeScript source for the admin JS is in [`admin/src/`](https://github.com/novincode/openfields/tree/main/admin/src). The uncompressed CSS source for `admin.css` is in [`admin/src/styles/`](https://github.com/novincode/openfields/tree/main/admin/src/styles). All other JavaScript and CSS files in `assets/admin/js/` and `assets/admin/css/` (except `admin.js` and `admin.css`) are already human-readable and uncompressed.
24+
`the_field( 'my_field' )` — echo a field value directly.
2525

26-
**To build from source:**
26+
= Template Examples =
2727

28-
1. Clone the repository: `git clone https://github.com/novincode/openfields.git`
29-
2. Install dependencies: `pnpm install`
30-
3. Build the admin JS/CSS: `pnpm run build`
28+
**Simple field:**
3129

32-
The build uses Vite and TypeScript. Output is placed in `plugin/assets/admin/js/admin.js` and `plugin/assets/admin/css/admin.css`.
30+
<?php echo esc_html( get_field( 'subtitle' ) ); ?>
3331

34-
= Key Features =
32+
**Repeater loop:**
3533

36-
* **Modern Interface** - Built with React for a smooth, intuitive user experience
37-
* **Multiple Field Types** - Text, textarea, number, email, URL, select, checkbox, radio, switch, date, time, color picker, image, file, gallery, WYSIWYG editor, link, post object, taxonomy, user, repeater, and group fields
38-
* **Flexible Locations** - Assign field groups to specific post types, page templates, taxonomies, or users
39-
* **Repeater Fields** - Create repeatable sets of fields for dynamic content
40-
* **Group Fields** - Organize related fields into collapsible groups
41-
* **Standards Compatible** - Uses standard WordPress meta storage for maximum compatibility
42-
* **Developer Friendly** - Clean codebase with hooks and filters for customization
43-
* **Lightweight** - No bloat, only what you need
44-
* **100% Free** - All features available, no premium version
34+
<?php while ( have_rows( 'team_members' ) ) : the_row(); ?>
35+
<h3><?php the_sub_field( 'name' ); ?></h3>
36+
<p><?php the_sub_field( 'role' ); ?></p>
37+
<?php endwhile; ?>
38+
39+
**User field (with prefix):**
40+
41+
<?php echo esc_html( get_field( 'company', 'user_' . $user_id ) ); ?>
42+
43+
Full API reference and guides: [openfields.codeideal.com/docs](https://openfields.codeideal.com/docs)
44+
45+
= ACF-Compatible API =
46+
47+
If you know ACF, you already know Open Fields. The template API uses the same function names:
48+
49+
* `get_field()` / `the_field()`
50+
* `get_fields()` / `update_field()` / `delete_field()`
51+
* `have_rows()` / `the_row()` / `get_sub_field()` / `the_sub_field()`
52+
* `get_row()` / `get_rows()` / `reset_rows()` / `get_row_index()`
53+
* `get_field_object()` / `get_sub_field_object()`
54+
55+
When ACF is also active, these wrappers are not loaded — no conflicts. Both plugins store data as standard WordPress meta, so they can coexist.
56+
57+
Every function also has a prefixed version (e.g. `cofld_get_field()`) that is always available regardless of other plugins.
4558

4659
= Field Types =
4760

48-
* **Basic Fields**: Text, Textarea, Number, Email, URL, Password
49-
* **Choice Fields**: Select, Checkbox, Radio, Switch (Toggle)
50-
* **Date & Time**: Date Picker, Time Picker, DateTime Picker
51-
* **Media Fields**: Image, File, Gallery
52-
* **Content Fields**: WYSIWYG Editor, Link
53-
* **Relational Fields**: Post Object, Taxonomy, User
54-
* **Layout Fields**: Repeater, Group
61+
* **Basic:** Text, Textarea, Number, Email, URL, Password
62+
* **Choice:** Select, Checkbox, Radio, Switch
63+
* **Date & Time:** Date, Time, DateTime, Color Picker
64+
* **Media:** Image, File, Gallery
65+
* **Content:** WYSIWYG Editor, Link
66+
* **Relational:** Post Object, Taxonomy, User
67+
* **Layout:** Repeater, Group
5568

5669
= Location Rules =
5770

58-
Assign your field groups based on:
71+
Assign field groups to:
72+
73+
* Post types (including custom post types)
74+
* Page templates
75+
* Post status / format / category
76+
* Taxonomy terms
77+
* User roles
78+
79+
= Source Code =
80+
81+
The admin JS and CSS are compiled from TypeScript/React source. All other files are uncompressed.
5982

60-
* Post Type (posts, pages, custom post types)
61-
* Page Template
62-
* Post Status
63-
* Taxonomy Terms
64-
* User Role
65-
* And more...
83+
* **Source repo:** [github.com/novincode/openfields](https://github.com/novincode/openfields)
84+
* **Admin source:** [admin/src/](https://github.com/novincode/openfields/tree/main/admin/src)
85+
* **Build:** `pnpm install && pnpm build` (Vite + TypeScript)
6686

6787
== Installation ==
6888

69-
1. Upload the `codeideal-open-fields` folder to the `/wp-content/plugins/` directory
70-
2. Activate the plugin through the 'Plugins' menu in WordPress
71-
3. Go to Open Fields in the admin menu to create your first field group
89+
1. Go to **Plugins → Add New** in your WordPress admin
90+
2. Search for **"Codeideal Open Fields"**
91+
3. Click **Install Now**, then **Activate**
92+
4. Go to **Open Fields** in the admin menu to create your first field group
93+
94+
Or install manually:
95+
96+
1. Download from [WordPress.org](https://wordpress.org/plugins/codeideal-open-fields/) or [GitHub Releases](https://github.com/novincode/openfields/releases)
97+
2. Upload the `codeideal-open-fields` folder to `/wp-content/plugins/`
98+
3. Activate through the Plugins menu
7299

73100
== Frequently Asked Questions ==
74101

75-
= Is Codeideal Open Fields free? =
102+
= Is this really 100% free? =
76103

77-
Yes! Codeideal Open Fields is 100% free and open source. All features are available without any premium version.
104+
Yes. Every feature is free. No premium version, no upsells, no locked fields.
78105

79-
= Can I migrate from other custom fields plugins? =
106+
= Can I use this alongside ACF? =
80107

81-
Codeideal Open Fields uses standard WordPress post meta storage, making it compatible with data from other custom fields plugins. You may need to recreate your field groups manually.
108+
Yes. Both plugins store data as standard WordPress post meta. When ACF is active, Open Fields does not redefine ACF's functions — there are no conflicts.
82109

83-
= Does Codeideal Open Fields work with custom post types? =
110+
= How do I get field values in my theme? =
84111

85-
Yes! Codeideal Open Fields works with all post types, including custom post types created by other plugins or themes.
112+
Use `get_field( 'field_name' )` or the prefixed `cofld_get_field( 'field_name' )`. Works exactly like you'd expect.
86113

87-
= Can I use Codeideal Open Fields with page builders? =
114+
= Does it work with custom post types? =
88115

89-
Yes, Codeideal Open Fields stores data as standard WordPress post meta, making it compatible with most page builders and themes.
116+
Yes. Any public or private post type registered in WordPress.
90117

91-
= How do I retrieve field values in my theme? =
118+
= What about page builders? =
92119

93-
Use the standard WordPress functions like `get_post_meta()` or the helper function `get_field()`.
120+
Standard WordPress meta is used, so Elementor, Bricks, Beaver Builder, and others can read the data via their dynamic data features.
94121

95122
== Screenshots ==
96123

97-
1. Field Groups List - Manage all your custom field groups
98-
2. Field Group Editor - Create and configure fields with an intuitive interface
99-
3. Meta Box Display - See your custom fields on the post edit screen
100-
4. Repeater Fields - Add repeatable sets of fields
101-
5. Location Rules - Control where your fields appear
124+
1. Field group editor — visual drag-and-drop builder
125+
2. Field configuration — detailed settings for each field
126+
3. Location rules — control where fields appear
127+
4. Easy to use — clean, modern interface
102128

103129
== Changelog ==
104130

131+
= 0.4.0 =
132+
* Fixed: Duplicate Gutenberg block (cofld/field vs openfields/field) — now registers a single "Open Fields" block
133+
* Updated: Tested with WordPress 6.9.1
134+
* Improved: Plugin page with screenshots, banner, and icon on WordPress.org
135+
* Improved: readme.txt rewritten for clarity with code examples and docs links
136+
105137
= 0.3.0 =
106-
* Security: REST API `/search/users` and `/options/roles` endpoints now require `list_users` capability instead of `edit_posts`
107-
* Security: Added `current_user_can( 'edit_term' )` capability check to taxonomy field save handler
108-
* Security: All bare `echo` output now wrapped in proper escaping functions (`esc_attr`, `esc_html`)
109-
* Changed: Plugin prefix renamed from `cof` (3 chars) to `cofld` (5 chars) to comply with WordPress.org prefix length requirements — affects all constants, functions, CSS classes, JS variables, database table names, hooks, and file names
110-
* Added: Source code documentation section in readme explaining where to find uncompressed source for built JS/CSS assets
111-
* Developer note: Database table names changed from `cof_fieldsets`, `cof_fields`, `cof_locations` to `cofld_fieldsets`, `cofld_fields`, `cofld_locations`
112-
* Developer note: All public API functions renamed (e.g. `cof_get_field` → `cofld_get_field`)
138+
* Security: REST API endpoints now require proper capabilities
139+
* Security: Added capability check to taxonomy save handler
140+
* Security: All output properly escaped
141+
* Changed: Plugin prefix renamed from cof to cofld (5+ chars per WordPress.org guidelines)
113142

114143
= 0.2 =
115-
* Fixed: Page templates not fetched dynamically — now scans all public post types and block theme templates
116-
* Fixed: Template matching failure when default template is selected (value mismatch between WordPress API and stored rules)
117-
* Fixed: Fields not saving when fieldsets use template, category, or post format location rules
118-
* Fixed: Admin interface failed to load data (localized script variable name mismatch)
119-
* Fixed: Invalid menu icon (dashicons-forms does not exist)
120-
* Fixed: Meta box script localization targeting non-existent script handle
121-
* Fixed: Term and user default value logic overriding intentional "0" or empty values
122-
* Added: Dynamic page template options in location rule builder (fetched from WordPress, no longer hardcoded)
123-
* Added: Post Category and Post Format location rule types in admin UI
124-
* Added: Categories, post formats, and page templates provided to admin via localized data
125-
* Added: Plugin text domain loading for translation support
126-
* Added: Activation redirect transient for first-time setup experience
127-
* Added: Switch field renderer include (was missing)
128-
* Improved: Removed unnecessary flush_rewrite_rules on activation/deactivation
129-
* Improved: Removed phantom scheduled hook cleanup for non-existent cron event
130-
* Improved: Admin mount point ID aligned between PHP and React
131-
132-
= 0.1.1 =
133-
* Rebranded to Codeideal Open Fields
134-
* Improved security and code quality
135-
* Various bug fixes
144+
* Fixed: Dynamic page template options, template matching, field saving, admin loading
145+
* Added: Post category/format location rules, activation redirect, switch renderer
136146

137147
= 0.1.0 =
138148
* Initial release
139-
* Field types: text, textarea, number, email, URL, select, checkbox, radio, switch, date, time, datetime, color, image, file, gallery, WYSIWYG, link, post object, taxonomy, user, repeater, group
140-
* Location rules for post types, page templates, taxonomies, and users
141-
* Modern React-based admin interface
142-
* REST API for field group management
143-
* Developer hooks and filters
144149

145150
== Upgrade Notice ==
146151

147-
= 0.1.1 =
148-
Rebranded to Codeideal Open Fields with various improvements.
152+
= 0.4.0 =
153+
Fixes duplicate block registration. Updated for WordPress 6.9 compatibility.

0 commit comments

Comments
 (0)