Title: Native Custom Fields &#8211; Custom Content Types and Meta Fields
Author: Kadim Gültekin
Published: <strong>18. Mart 2026.</strong>
Last modified: 23. Septembar 2026.

---

Search plugins

![](https://ps.w.org/native-custom-fields/assets/banner-772x250.jpg?rev=3574585)

![](https://ps.w.org/native-custom-fields/assets/icon-128x128.png?rev=3574585)

# Native Custom Fields – Custom Content Types and Meta Fields

 By [Kadim Gültekin](https://profiles.wordpress.org/arkenon/)

[Download](https://downloads.wordpress.org/plugin/native-custom-fields.1.4.0.zip)

 * [Details](https://me.wordpress.org/plugins/native-custom-fields/#description)
 * [Reviews](https://me.wordpress.org/plugins/native-custom-fields/#reviews)
 *  [Installation](https://me.wordpress.org/plugins/native-custom-fields/#installation)
 * [Development](https://me.wordpress.org/plugins/native-custom-fields/#developers)

 [Support](https://wordpress.org/support/plugin/native-custom-fields/)

## Description

Native Custom Fields is a modern WordPress plugin for creating custom content types,
meta fields, and options pages using WordPress’ own native component system.

Instead of shipping a proprietary UI framework or custom database structure, Native
Custom Fields leverages WordPress core technologies such as:

 * @wordpress/scripts
 * @wordpress/components
 * @wordpress/elements
 * @wordpress/icons
 * @wordpress/data

This ensures a seamless, future-proof experience that evolves together with WordPress
core.

#### Why Native Custom Fields?

Most custom field plugins introduce their own UI systems, internal data storage 
layers, or hidden configuration post types.

Native Custom Fields follows a different philosophy:

• Uses WordPress native UI components
 • Stores configuration in wp_options • Stores
data in postmeta, termmeta, and usermeta • Does not create unnecessary database 
tables • Does not register hidden configuration post types • Follows WordPress coding
standards

The result is a clean, lightweight, and maintainable solution.

#### Key Features

 * Register Custom Post Types
 * Register Custom Taxonomies
 * Import / Export via JSON or PHP
 * Options Page & Fields Builder
 * AI Integration with Abilities API & WordPress AI Client

#### Meta Fields

Create field groups and attach them to:
 * Post Types * Taxonomies * User Profiles*
Options Pages

#### Supported Components

 * Input Control
 * Text Control
 * Number Control
 * Select Control
 * Checkbox Control
 * Radio Control
 * Textarea Control
 * Range Control
 * Toggle Control
 * Color Picker
 * Color Palette
 * Date Picker
 * DateTime Picker
 * Time Picker
 * Unit Control
 * Angle Picker Control
 * Alignment Matrix Control
 * Border Box Control
 * Border Control
 * Box Control
 * Toggle Group Control
 * Combobox Field
 * Font Size Picker
 * File Upload
 * Media Library
 * Form Token
 * ExternalLink
 * Heading
 * Notice
 * Text Highlight

Custom Components:
 * Repeater * Group

#### Developer-Friendly

 * Built with PSR-4 autoloading
 * Strict Types compatible
 * Modern React-based admin UI
 * Clean and extendable architecture
 * Import / Export via JSON or PHP

#### Performance-Focused

 * Minimum admin UI bloat
 * Native WordPress components
 * No redundant database tables
 * Optimized for long-term maintainability

### Credits

Built using official WordPress packages:

 * @wordpress/scripts
 * @wordpress/components
 * @wordpress/elements
 * @wordpress/icons
 * @wordpress/data

Assets:

 * All images located in the Admin/assets/images folder are self created and are
   licensed under CC0 1.0 Universal (CC0 1.0) Public Domain Dedication.

Composer Packages:

 * PHP DI – Copyright (c) Matthieu Napoli

### Source Code

It is available on GitHub:
 * GitHub: https://github.com/Arkenon/native-custom-fields

### Developers

If you want to contribute to the plugin:
 1) Download the source code and run `npm
install` to install the development dependencies. 2) To install composer dependencies,
run `composer install`. 3) Run `npm start` to start the development server. 4) To
build the plugin, run `npm run build`.

## Screenshots

[[

[[

[[

[[

[[

[[

[[

## Installation

 1. Upload the plugin files to `/wp-content/plugins/native-custom-fields`
 2. Activate the plugin through the ‘Plugins’ screen in WordPress
 3. Start creating Custom Content Types and Field Groups from the admin panel

## FAQ

### Who is this plugin for?

Native Custom Fields is built primarily for WordPress developers, agencies, and 
users who want full control over structured data while staying aligned with WordPress
core standards.

### How is this different from other custom field plugins?

Native Custom Fields uses WordPress’ official component system instead of a custom-
built admin UI framework.
 It follows WordPress data architecture and avoids unnecessary
database layers.

### Does it create custom database tables?

No. Configuration is stored in wp_options, and data is stored in standard WordPress
meta tables.

### Is it compatible with the Block Editor?

Yes. The plugin is built around the Block Editor architecture and uses native WordPress
components.

### Do the free version have Repeater and Group fields?

Yes. The free version has Repeater and Group fields. These are custom components
built using WordPress native components recursively or grouped.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Native Custom Fields – Custom Content Types and Meta Fields” is open source software.
The following people have contributed to this plugin.

Contributors

 *   [ Kadim Gültekin ](https://profiles.wordpress.org/arkenon/)

[Translate “Native Custom Fields – Custom Content Types and Meta Fields” into your language.](https://translate.wordpress.org/projects/wp-plugins/native-custom-fields)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/native-custom-fields/),
check out the [SVN repository](https://plugins.svn.wordpress.org/native-custom-fields/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/native-custom-fields/)
by [RSS](https://plugins.trac.wordpress.org/log/native-custom-fields/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.4.0

 * Added: The `combobox` field now searches server side when its options come from
   a dynamic token. What is typed in the field is sent to the REST API as the `search`
   argument, so collections larger than a single REST response stay fully reachable.
   Previously the typed text only filtered the records that had already been fetched.
 * Added: The record matching a stored value is now fetched on its own, so a saved
   selection keeps its label even when it is not part of the current option list
   or search results.
 * Fixed: A `per_page` above 100, or `-1`, made the whole request fail with `rest_invalid_param`
   and the field rendered no options at all. Such values are now capped at the REST
   maximum of 100, and `per_page=all` is accepted as a spelling of the same thing.
 * Fixed: `{{menus}}` raised a TypeError on any navigation menu without a title.
 * Fixed: Combining several dynamic tokens could list the same record more than 
   once.
 * Removed: The `{{roles}}` token from the options help text and the documentation.
   It was never implemented and always resolved to an empty list.
 * Updated: The help text of the options field, which now documents the `{{posts?
   type=slug}}` pattern for querying a custom post type. That pattern was supported
   but undocumented, so there was no way to populate a field from a custom post 
   type without reading the source. The text is also grouped into sections and rendered
   with its line breaks intact.
 * Updated: Corrected two wrong parameter examples in the options help text: the
   users endpoint takes `roles` (plural, role slugs) rather than `role`, and `author`
   takes a user ID rather than a login name.
 * Added: A „Dynamic Options“ documentation page covering the available tokens, 
   their parameters, the REST item limits, and server-side search. Select, radio,
   combobox, toggle group and token field documentation now links to it.
 * Updated: Token field documentation now states that `suggestions` is a literal
   list and does not support the `{{token}}` syntax.

#### 1.3.9

 * Added: Sub-fields for `repeater` and `group` fields can now be defined through
   the field abilities (`save-post-meta-fields`, `save-term-meta-fields`, `save-
   user-meta-fields`, `save-options-page-fields`) using the new `fields` property
   on a field definition. Up to two levels of nesting are supported. Previously 
   only the container field could be created and its contents had to be added in
   the field builder.
 * Updated: Aligned the editor controls with the WordPress 7.1 component changes,
   so no deprecation notices are logged on 7.1.
 * Removed: The „Size“ option from the border, border box and font size field settings.
   The underlying `size` prop is deprecated and has no effect as of WordPress 7.1.
   A value stored by an earlier version is now ignored instead of being passed to
   the control.
 * Removed: The „Large“ (`__unstable-large`) choice from the input field „Size“ 
   setting. The remaining choices are default, small and compact.
 * Removed: The `__next40pxDefaultSize` prop from every control. The 40px default
   height rollout is complete in WordPress 7.1 and the prop no longer has any effect.
 * Updated: Border, border box, font size and input control documentation to match
   the available settings.
 * Added: Missing „Requires at least“ header in readme.txt and the plugin file. 
   The plugin already assumed WordPress 7.0 as its minimum, but neither header declared
   it.

#### 1.3.8

 * Added: Missing „Tested up to: 7.1“ tag in readme.txt

#### 1.3.7

 * Bumped WordPress tested-up-to version 7.1

#### 1.3.6

Fixed: Repeater, group, file and multiple select fields were registered with the
wrong meta type, so `register_meta` raised a „you must specify the schema for each
array item“ notice and dropped the meta from the REST API.
 Fixed: The `native_custom_fields_register_post_meta_type`
and `native_custom_fields_register_term_meta_type` filters received the meta key
instead of the meta type as their filtered value. Added: Array and object meta are
now registered with a REST schema generated from the field configuration. Updated:
Hooks documentation now describes how the meta type is derived and when a custom
schema is required.

#### 1.3.5

Fixed: Repeater default values were not rendered on options pages until the section
was reset.
 Fixed: „Reset All“ on an options page cleared repeater defaults instead
of restoring them. Fixed: Array defaults were flattened to an empty string for fields
registered through the Abilities API. Updated: Repeater control documentation now
covers the `default` parameter.

#### 1.3.4

Fixed: Post type archive did not work when „Has Archive“ was enabled without a custom
archive slug.
 Fixed: Query var fell back incorrectly when no custom query var slug
was provided. Fixed: Endpoint mask normalization broke post types registered with
rewrite disabled. Updated: Post type template field now documents the correct block
array format.

#### 1.3.3

Fixed: Missing required field controls in Post Meta, Term Meta, User Meta and TreView
forms.

#### 1.3.2

Added: ncf_sanitize_field_value hook to override field sanitization.

#### 1.3.1

Fixed: Sanitization issue for multine line text field.

#### 1.2.8

 * Fix: Boot method for external usage in another plugins.

#### 1.2.7

 * Add: Singleton pattern intp DI Container
 * Fix: Boot method for external usage in another plugins.
 * Move: Hooks in the services into controllers

#### 1.2.6

 * Add: Static boot method for external usage in another plugins.
 * Test: Added Composer package capability.
 * Test: Added GitHub Actions workflow for testing.

#### 1.2.3

 * Add: Into Packagist repository

#### 1.2.0

 * Add: Parent Slug parameter into options page

#### 1.0.9

 * Add: Annotations parameter into abilities

#### 1.0.6

 * Fixed: Auto generate empty labels for post types and taxonomies in Abilities.

#### 1.0.5

 * Moved: Pro features into free plugin: Import&Export Module & Options Page Builder&
   AI Integration.

#### 1.0.4

 * Added: Auto generate empty labels for post types.
 * Added: Auto generate empty labels for taxonomies.

#### 1.0.3

 * Tested with WordPress 7.0

#### 1.0.2

 * Updated: Readme.txt
 * Updated: Dashboard screen

#### 1.0.1

 * Updated: Add PHP-DI Version to 7.1.1
 * Updated: Rest enpoint permissions in PostMetaController and OptionsController

#### 1.0.0

 * Initial public release

## Meta

 *  Version **1.4.0**
 *  Last updated **10 sata ago**
 *  Active installations **10+**
 *  WordPress version ** 7.0 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/native-custom-fields/)
 * Tags
 * [custom fields](https://me.wordpress.org/plugins/tags/custom-fields/)[fields](https://me.wordpress.org/plugins/tags/fields/)
   [meta](https://me.wordpress.org/plugins/tags/meta/)[repeater](https://me.wordpress.org/plugins/tags/repeater/)
 *  [Advanced View](https://me.wordpress.org/plugins/native-custom-fields/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/native-custom-fields/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/native-custom-fields/reviews/)

## Contributors

 *   [ Kadim Gültekin ](https://profiles.wordpress.org/arkenon/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/native-custom-fields/)