{"id":266959,"date":"2026-02-24T08:44:21","date_gmt":"2026-02-24T08:44:21","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/openfields\/"},"modified":"2026-02-24T13:55:51","modified_gmt":"2026-02-24T13:55:51","slug":"codeideal-open-fields","status":"publish","type":"plugin","link":"https:\/\/twd.wordpress.org\/plugins\/codeideal-open-fields\/","author":23421948,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"0.4.2","stable_tag":"0.4.2","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Codeideal Open Fields","header_author":"Codeideal","header_description":"Modern custom fields builder for WordPress. Create and manage custom field groups with an intuitive interface.","assets_banners_color":"ebf0eb","last_updated":"2026-02-24 13:55:51","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/openfields.codeideal.com\/support","header_plugin_uri":"https:\/\/openfields.codeideal.com","header_author_uri":"https:\/\/codeideal.com","rating":0,"author_block_rating":0,"active_installs":30,"downloads":270,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.0":{"tag":"0.3.0","author":"shayancode","date":"2026-02-24 08:43:55"},"0.4.0":{"tag":"0.4.0","author":"shayancode","date":"2026-02-24 10:08:24"},"0.4.1":{"tag":"0.4.1","author":"shayancode","date":"2026-02-24 12:30:03"},"0.4.2":{"tag":"0.4.2","author":"shayancode","date":"2026-02-24 13:55:51"}},"upgrade_notice":{"0.4.1":"<p>Full i18n and RTL support. Translate the plugin into your language at translate.wordpress.org.<\/p>","0.4.0":"<p>Fixes duplicate block registration. Updated for WordPress 6.9 compatibility.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3468903,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3468903,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3468533,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3468533,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":{"cofld\/field":{"name":"cofld\/field","title":"Open Fields"}},"tagged_versions":["0.3.0","0.4.0","0.4.1","0.4.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3468522,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3468522,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3468522,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3468522,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"Field group editor \u2014 visual drag-and-drop builder","2":"Field configuration \u2014 detailed settings for each field","3":"Location rules \u2014 control where fields appear","4":"Easy to use \u2014 clean, modern interface"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2010,21698,245286,9051,4586],"plugin_category":[],"plugin_contributors":[256508],"plugin_business_model":[],"class_list":["post-266959","plugin","type-plugin","status-publish","hentry","plugin_tags-custom-fields","plugin_tags-custom-meta","plugin_tags-field-builder","plugin_tags-meta-fields","plugin_tags-post-meta","plugin_contributors-shayancode","plugin_committers-shayancode"],"banners":{"banner":"https:\/\/ps.w.org\/codeideal-open-fields\/assets\/banner-772x250.png?rev=3468533","banner_2x":"https:\/\/ps.w.org\/codeideal-open-fields\/assets\/banner-1544x500.png?rev=3468533","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/codeideal-open-fields\/assets\/icon-128x128.gif?rev=3468903","icon_2x":"https:\/\/ps.w.org\/codeideal-open-fields\/assets\/icon-256x256.gif?rev=3468903","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/codeideal-open-fields\/assets\/screenshot-1.png?rev=3468522","caption":"Field group editor \u2014 visual drag-and-drop builder"},{"src":"https:\/\/ps.w.org\/codeideal-open-fields\/assets\/screenshot-2.png?rev=3468522","caption":"Field configuration \u2014 detailed settings for each field"},{"src":"https:\/\/ps.w.org\/codeideal-open-fields\/assets\/screenshot-3.png?rev=3468522","caption":"Location rules \u2014 control where fields appear"},{"src":"https:\/\/ps.w.org\/codeideal-open-fields\/assets\/screenshot-4.png?rev=3468522","caption":"Easy to use \u2014 clean, modern interface"}],"raw_content":"<!--section=description-->\n<p><strong>Codeideal Open Fields<\/strong> lets you add custom fields to posts, pages, custom post types, taxonomies, and users. The admin interface is built with React and TypeScript \u2014 fast, responsive, and intuitive.<\/p>\n\n<p>All features are free. No premium tier. No locked functionality.<\/p>\n\n<h4>Quick Start<\/h4>\n\n<pre><code>get_field( 'my_field' ) \u2014 retrieve any field value.\n\nthe_field( 'my_field' ) \u2014 echo a field value directly.\n<\/code><\/pre>\n\n<h4>Template Examples<\/h4>\n\n<p><strong>Simple field:<\/strong><\/p>\n\n<pre><code>&lt;?php echo esc_html( get_field( 'subtitle' ) ); ?&gt;\n<\/code><\/pre>\n\n<p><strong>Repeater loop:<\/strong><\/p>\n\n<pre><code>&lt;?php while ( have_rows( 'team_members' ) ) : the_row(); ?&gt;\n    &lt;h3&gt;&lt;?php the_sub_field( 'name' ); ?&gt;&lt;\/h3&gt;\n    &lt;p&gt;&lt;?php the_sub_field( 'role' ); ?&gt;&lt;\/p&gt;\n&lt;?php endwhile; ?&gt;\n<\/code><\/pre>\n\n<p><strong>User field (with prefix):<\/strong><\/p>\n\n<pre><code>&lt;?php echo esc_html( get_field( 'company', 'user_' . $user_id ) ); ?&gt;\n<\/code><\/pre>\n\n<p>Full API reference and guides: <a href=\"https:\/\/openfields.codeideal.com\/docs\">openfields.codeideal.com\/docs<\/a><\/p>\n\n<h4>ACF-Compatible API<\/h4>\n\n<p>If you know ACF, you already know Open Fields. The template API uses the same function names:<\/p>\n\n<ul>\n<li><code>get_field()<\/code> \/ <code>the_field()<\/code><\/li>\n<li><code>get_fields()<\/code> \/ <code>update_field()<\/code> \/ <code>delete_field()<\/code><\/li>\n<li><code>have_rows()<\/code> \/ <code>the_row()<\/code> \/ <code>get_sub_field()<\/code> \/ <code>the_sub_field()<\/code><\/li>\n<li><code>get_row()<\/code> \/ <code>get_rows()<\/code> \/ <code>reset_rows()<\/code> \/ <code>get_row_index()<\/code><\/li>\n<li><code>get_field_object()<\/code> \/ <code>get_sub_field_object()<\/code><\/li>\n<\/ul>\n\n<p>When ACF is also active, these wrappers are not loaded \u2014 no conflicts. Both plugins store data as standard WordPress meta, so they can coexist.<\/p>\n\n<p>Every function also has a prefixed version (e.g. <code>cofld_get_field()<\/code>) that is always available regardless of other plugins.<\/p>\n\n<h4>Field Types<\/h4>\n\n<ul>\n<li><strong>Basic:<\/strong> Text, Textarea, Number, Email, URL, Password<\/li>\n<li><strong>Choice:<\/strong> Select, Checkbox, Radio, Switch<\/li>\n<li><strong>Date &amp; Time:<\/strong> Date, Time, DateTime, Color Picker<\/li>\n<li><strong>Media:<\/strong> Image, File, Gallery<\/li>\n<li><strong>Content:<\/strong> WYSIWYG Editor, Link<\/li>\n<li><strong>Relational:<\/strong> Post Object, Taxonomy, User<\/li>\n<li><strong>Layout:<\/strong> Repeater, Group<\/li>\n<\/ul>\n\n<h4>Location Rules<\/h4>\n\n<p>Assign field groups to:<\/p>\n\n<ul>\n<li>Post types (including custom post types)<\/li>\n<li>Page templates<\/li>\n<li>Post status \/ format \/ category<\/li>\n<li>Taxonomy terms<\/li>\n<li>User roles<\/li>\n<\/ul>\n\n<h4>Source Code<\/h4>\n\n<p>The admin JS and CSS are compiled from TypeScript\/React source. All other files are uncompressed.<\/p>\n\n<ul>\n<li><strong>Source repo:<\/strong> <a href=\"https:\/\/github.com\/novincode\/openfields\">github.com\/novincode\/openfields<\/a><\/li>\n<li><strong>Admin source:<\/strong> <a href=\"https:\/\/github.com\/novincode\/openfields\/tree\/main\/admin\/src\">admin\/src\/<\/a><\/li>\n<li><strong>Build:<\/strong> <code>pnpm install &amp;&amp; pnpm build<\/code> (Vite + TypeScript)<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Go to <strong>Plugins \u2192 Add New<\/strong> in your WordPress admin<\/li>\n<li>Search for <strong>\"Codeideal Open Fields\"<\/strong><\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong><\/li>\n<li>Go to <strong>Open Fields<\/strong> in the admin menu to create your first field group<\/li>\n<\/ol>\n\n<p>Or install manually:<\/p>\n\n<ol>\n<li>Download from <a href=\"https:\/\/wordpress.org\/plugins\/codeideal-open-fields\/\">WordPress.org<\/a> or <a href=\"https:\/\/github.com\/novincode\/openfields\/releases\">GitHub Releases<\/a><\/li>\n<li>Upload the <code>codeideal-open-fields<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate through the Plugins menu<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20really%20100%25%20free%3F\"><h3>Is this really 100% free?<\/h3><\/dt>\n<dd><p>Yes. Every feature is free. No premium version, no upsells, no locked fields.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20alongside%20acf%3F\"><h3>Can I use this alongside ACF?<\/h3><\/dt>\n<dd><p>Yes. Both plugins store data as standard WordPress post meta. When ACF is active, Open Fields does not redefine ACF's functions \u2014 there are no conflicts.<\/p><\/dd>\n<dt id=\"how%20do%20i%20get%20field%20values%20in%20my%20theme%3F\"><h3>How do I get field values in my theme?<\/h3><\/dt>\n<dd><p>Use <code>get_field( 'field_name' )<\/code> or the prefixed <code>cofld_get_field( 'field_name' )<\/code>. Works exactly like you'd expect.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20custom%20post%20types%3F\"><h3>Does it work with custom post types?<\/h3><\/dt>\n<dd><p>Yes. Any public or private post type registered in WordPress.<\/p><\/dd>\n<dt id=\"what%20about%20page%20builders%3F\"><h3>What about page builders?<\/h3><\/dt>\n<dd><p>Standard WordPress meta is used, so Elementor, Bricks, Beaver Builder, and others can read the data via their dynamic data features.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Added: Full internationalization (i18n) support \u2014 all admin UI strings are now translatable<\/li>\n<li>Added: RTL (right-to-left) language support \u2014 admin interface works correctly in RTL languages like Arabic, Hebrew, and Farsi<\/li>\n<li>Added: Translation-ready React admin, Gutenberg block, and relational fields<\/li>\n<li>Fixed: Block editor strings now use the correct text domain<\/li>\n<li>Fixed: wp_set_script_translations() for all JavaScript handles<\/li>\n<li>Improved: Logical CSS properties for direction-neutral styling<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Fixed: Duplicate Gutenberg block (cofld\/field vs openfields\/field) \u2014 now registers a single \"Open Fields\" block<\/li>\n<li>Updated: Tested with WordPress 6.9.1<\/li>\n<li>Improved: Plugin page with screenshots, banner, and icon on WordPress.org<\/li>\n<li>Improved: readme.txt rewritten for clarity with code examples and docs links<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Security: REST API endpoints now require proper capabilities<\/li>\n<li>Security: Added capability check to taxonomy save handler<\/li>\n<li>Security: All output properly escaped<\/li>\n<li>Changed: Plugin prefix renamed from cof to cofld (5+ chars per WordPress.org guidelines)<\/li>\n<\/ul>\n\n<h4>0.2<\/h4>\n\n<ul>\n<li>Fixed: Dynamic page template options, template matching, field saving, admin loading<\/li>\n<li>Added: Post category\/format location rules, activation redirect, switch renderer<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"A free, modern custom fields plugin for WordPress. Build field groups with a visual editor \u2014 no code required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/266959","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=266959"}],"author":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/shayancode"}],"wp:attachment":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=266959"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=266959"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=266959"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=266959"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=266959"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=266959"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}