← All products

Nik Custom Fields — custom fields for WordPress

Nik Custom Fields — custom fields for WordPress

Build the fields your content actually needs — then read them back with the field functions your theme already uses. Nik Custom Fields creates field groups and attaches them to posts, pages, products, users, taxonomy terms, comments or a site-wide options page.

Thirty-six field types

Text, Textarea, Number, Range, Email, URL, Password, Rich text (the real WordPress editor), Image, File, Gallery, Select, Checkbox, Radio, Button group, True/False, Link, Post object, Page link, Relationship, Taxonomy, User, Colour, Date, Date and time, Time, oEmbed, Icon picker, Google Map, Message, Accordion and Tab — plus the four that make structured content possible: Group, Repeater, Flexible content and Clone, nested to any depth. The demo page below renders every one of them, and the count on it is read from the plugin itself, so it cannot quietly fall behind.

A template API you already know

Read values with the field functions common to WordPress development — get_field(), the_field(), have_rows(), the_row(), get_sub_field(), get_field_object(), update_field() and the rest. Prefixed nik_* equivalents are always available and are the supported API. If another plugin already defines those names, this one steps aside and never redeclares them, so it is safe to install alongside whatever you run today.

Migrate an existing setup automatically

Already storing custom fields with another plugin? Nik Custom Fields detects that data and takes it over — field groups, repeaters and every stored value — and can rebuild the fields even when the original plugin has already been removed and only its values remain in the database. It reads the storage format the most widely-used custom-fields plugins share. Nothing is deleted or overwritten, both plugins can run side by side until you are satisfied, and running the import twice is safe.

Repeater rows you can actually query

Every value inside a repeater or flexible-content field is mirrored into a flat meta key, so meta_query and orderby reach inside a row with no add-on:

array( 'key' => nik_meta_key( 'specs', '0_name' ), 'value' => 'weight' )

Gutenberg blocks from a field group

Register a block from a field group and its editing UI is the plugin’s own field markup — the same repeater, conditional logic and media picker you use in a meta box, with no React build step. Values live in the block’s attributes, so they travel when a block is copied or reused and never touch post meta.

More than the basics

  • Bidirectional relationships out of the box: link a product to an accessory and the product is written into the accessory’s own field automatically — and removed again when you unlink.
  • Conditional logic — show a field only while another holds a given value. The rules are evaluated in the editor and on save, so a required field that is currently hidden never blocks a save it should not.
  • Field groups in code or JSON. Declare a group in a theme file, or load a whole directory of JSON; import and export match on key, so ids may differ between dev, staging and production.
  • Renaming is safe. Change a field’s key and its stored values are carried across — including inside repeater sub-fields — instead of being orphaned.
  • Optional REST exposure per field group, with values already in their configured return format.
  • Every location — attach a group to any post type or taxonomy WordPress exposes, to users, comments or an options page.

Editing outside wp-admin

Render any field group as a front-end form with nik_form() — a member area, a submission form, a listing someone edits on the site itself. The same renderers, sanitising and validation as a meta box, and permission is checked both when the form is drawn and again when it is submitted.

Built to stay fast

Field groups and their definitions are cached with version-counter invalidation, and container values are indexed. On a 20-post archive reading three formatted fields each, the query count drops from 140 to 21; ten repeat reads of the same field cost zero extra queries.

Free, and nothing is sent anywhere

The whole plugin is free and GPL-licensed: no key to enter, no trial, no feature held back, and every update is free too. It also makes no external requests of any kind — nothing about your site leaves your server.

Shortcodes

  • — one field’s value.
  • — every field in a group, as a table.
  • — a gallery field.

All three accept post_id, which also takes option, user_5 or term_12.

Requirements

  • WordPress 6.1 or newer, PHP 7.4 or newer.
  • MySQL 5.7+ or MariaDB 10.2+ — the schema uses JSON columns, and activation is refused on an older server rather than creating tables that cannot hold the data.
  • WooCommerce is not required. Works on any WordPress site.

Reviews

No reviews yet — be the first to share your experience.

Reviews can be left by users who have downloaded or purchased this plugin — that is why every review here is genuine.

Frequently asked questions

Is it really free?

Yes, completely. No licence key, no subscription and no locked features — and no ads inside the plugin. Use it on as many sites as you like.

Do I need to register or pay to download?

No. The zip downloads directly from this page — no account, no registration and no payment.

How do I install it?

Download the zip below, then in WordPress open Plugins → Add New → Upload Plugin, choose the zip, install and activate. The settings then appear under Settings → Cookie Consent.

Will it work on my site?

The PHP and WordPress requirements are listed on this page. We test on current versions and popular themes; heavily customised or exotic builds cannot be guaranteed — but since the plugin is free, just install it and check.

I need specific functionality — can I order customisation?

Yes. Describe your task in the support chat and we will estimate the time and the cost. If the improvement is useful to everyone, we add it to the plugin — and then you get it for free.