Nik Custom Fields — живое демо

Каждый тип поля, который регистрирует плагин, и каждый описанный вызов — выполнены прямо на этой странице. Слева: с чем работает редактор и какой вызов делает шаблон. Справа: что этот вызов вернул.

36 типов полей зарегистрировано, 36 показаны на этой странице. Все зарегистрированные типы есть на этой странице.

A Типы полей

По блоку на тип: что видит редактор, вызов, результат.

textТекст

В админке

Однострочное поле. Подсказка, лимит символов, значение по умолчанию, префикс и суффикс.

В шаблоне

nik_the_field( 'd_text' );

Результат

A complete custom fields toolkit

textareaТекстовая Область

В админке

Многострочный текст без разметки. Число строк — настройка.

В шаблоне

nik_the_field( 'd_textarea' );

Результат

Plain text, kept verbatim.
Ampersands & quotes "survive" — no double escaping.

numberЧисло

В админке

Числовое поле с минимумом, максимумом, шагом и префиксом. Дробная часть сохраняется.

В шаблоне

nik_get_field( 'd_number' );   // float
nik_the_field( 'd_number' );   // localised

Результат

19.99
19,99

rangeПолзунок

В админке

Ползунок с живым показом значения.

В шаблоне

nik_get_field( 'd_range' );

Результат

65

emailEmail

В админке

Поле для e-mail. Некорректный адрес отклоняется при сохранении.

В шаблоне

nik_the_field( 'd_email' );

Результат

urlURL

В админке

Поле для ссылки.

В шаблоне

nik_the_field( 'd_url' );

passwordПароль

В админке

Скрытый ввод. Хранится как есть, выводится точками.

В шаблоне

nik_the_field( 'd_password' );

Результат

••••••••

wysiwygФорматированный текст

The gallery below is a [gallery] shortcode typed into the editor.

В админке

Настоящий редактор WordPress: TinyMCE, Quicktags, кнопка медиа. Шорткоды выполняются при выводе.

В шаблоне

nik_the_field( 'd_wysiwyg' );

Результат

Rich text from the real WordPress editor — lists, links and shortcodes all work:

  • TinyMCE and Quicktags
  • Media button

selectВыбор

В админке

Выпадающий список. Значение вне заданного списка не принимается.

В шаблоне

nik_get_field( 'd_select' );

Результат

live

radioПереключатель

В админке

Переключатели.

В шаблоне

nik_get_field( 'd_radio' );

Результат

high

button_groupГруппа кнопок

В админке

Один выбор в виде ряда кнопок.

В шаблоне

nik_get_field( 'd_buttons' );

Результат

m

checkboxФлажок

В админке

Одиночная галочка.

В шаблоне

nik_get_field( 'd_checkbox' );   // bool

Результат

true

true_falseДа / Нет

В админке

Переключатель «да/нет» со своей подписью.

В шаблоне

nik_get_field( 'd_truefalse' );  // bool

Результат

true

imageИзображение

В админке

Выбор из медиабиблиотеки. Формат возврата: id, URL или полный массив.

В шаблоне

$img = nik_get_field( 'd_image' );
echo $img['sizes']['medium'];

Результат

{
    "id": 933,
    "alt": "",
    "width": 800,
    "height": 800
}

galleryГалерея

В админке

Несколько изображений, порядок меняется перетаскиванием.

В шаблоне

foreach ( nik_get_field( 'd_gallery' ) as $img ) {
    echo $img['sizes']['thumbnail'];
}

Результат

4 images

fileФайл

В админке

Любой файл, не только изображение. Допустимые расширения — настройка.

В шаблоне

nik_the_field( 'd_file' );

Результат

icon_pickerВыбор значка

В админке

Dashicon или ссылка на изображение.

В шаблоне

nik_the_field( 'd_icon' );

Результат

dashicons-star-filled

oembedoEmbed

В админке

Ссылка на любой сервис с поддержкой oEmbed; вставка разворачивается при выводе.

В шаблоне

nik_the_field( 'd_oembed' );

Результат

linkСсылка

В админке

Адрес, текст ссылки и переключатель «открывать в новой вкладке».

В шаблоне

nik_the_field( 'd_link' );        // <a> with rel=noopener
nik_get_field( 'd_link' );        // array

Результат

Product page
{
    "url": "https://products.nikdimon.com/products/nik-custom-fields/",
    "title": "Product page",
    "target": "_blank"
}

color_pickerЦвет

В админке

Нативная палитра плюс поле для hex.

В шаблоне

nik_the_field( 'd_color' );

Результат

#2271b1

google_mapКарта Google

В админке

Широта, долгота и адрес.

В шаблоне

nik_the_field( 'd_map' );
nik_get_field( 'd_map' );

Результат

Kyiv, Ukraine
{
    "address": "Kyiv, Ukraine",
    "lat": 50.4501,
    "lng": 30.5234,
    "zoom": 14
}

date_pickerДата

В админке

Только дата. Хранится в сортируемом виде, выводится в формате сайта.

В шаблоне

nik_get_field( 'd_date', false, false );  // raw
nik_the_field( 'd_date' );                // formatted

Результат

2026-08-06
д.м.г.

date_time_pickerДата и время

В админке

Дата вместе со временем.

В шаблоне

nik_the_field( 'd_datetime' );

Результат

д.м.г. 17:30

time_pickerВремя

В админке

Время суток.

В шаблоне

nik_get_field( 'd_time' );

Результат

09:15:00

post_objectОбъект записи

В админке

Поиск с выбором одной записи. Ничего не грузится, пока не начнёшь печатать.

В шаблоне

$post = nik_get_field( 'd_postobject' );
echo $post->post_title;

Результат

WP_Post #701 Images auto convert — 1

page_linkСсылка на страницу

В админке

Тот же поиск, но значением становится постоянная ссылка.

В шаблоне

nik_the_field( 'd_pagelink' );

Результат

(пусто)

relationshipСвязь (записи)

В админке

Поиск с выбором нескольких записей, порядок меняется.

В шаблоне

foreach ( nik_get_field( 'd_relationship' ) as $post ) {
    echo get_permalink( $post );
}

Результат

taxonomyСвязь (термины)

В админке

Поиск по элементам любой таксономии.

В шаблоне

nik_get_field( 'd_taxonomy' );

Результат

{
    "term_id": 1,
    "name": "Без рубрики",
    "slug": "%d0%b1%d0%b5%d0%b7-%d1%80%d1%83%d0%b1%d1%80%d0%b8%d0%ba%d0%b8",
    "term_group": 0,
    "term_taxonomy_id": 1,
    "taxonomy": "category",
    "description": "",
    "parent": 0,
    "count": 0,
    "filter": "raw"
}

userСвязь (пользователи)

В админке

Поиск по пользователям сайта.

В шаблоне

nik_get_field( 'd_user' );

Результат

{
    "id": 1,
    "login": "PaperAdmin1873",
    "display_name": "PaperAdmin1873",
    "email": "dmitrij.nikolaenko.91@gmail.com",
    "roles": [
        "administrator"
    ]
}

groupГруппа

В админке

Несколько полей, собранных под одним именем.

В шаблоне

$d = nik_get_field( 'd_group' );
echo $d['w'] . '×' . $d['h'] . ' ' . $d['u'];

Результат

{
    "w": 120,
    "h": 80,
    "u": "cm"
}

repeaterПовторитель

В админке

Строки из подполей: редактор добавляет их и меняет порядок.

В шаблоне

while ( nik_have_rows( 'd_specs' ) ) : nik_the_row();
    echo nik_get_row_index();
    echo nik_get_sub_field( 'name' );
    echo nik_get_sub_field( 'value' );
endwhile;

Результат

#namevalueicon
1Weight1.2
2Length48
3Volume0.75

repeaterПовторитель

The same type again, nested — this is the case most alternatives get wrong.

В админке

Репитер внутри репитера. Глубина вложенности не ограничена.

В шаблоне

while ( nik_have_rows( 'd_sections' ) ) : nik_the_row();
    echo nik_get_sub_field( 'title' );

    while ( nik_have_rows( 'items' ) ) : nik_the_row();
        echo nik_get_sub_field( 'label' );
    endwhile;
endwhile;

Результат

Before release

  • ✅ Run the test suites
  • ✅ Update the changelog
  • ⬜ Tag the release

After release

  • ⬜ Publish the product page

flexibleГибкий контент

В админке

Редактор выбирает из именованных макетов, в любом порядке и сколько нужно раз.

В шаблоне

while ( nik_have_rows( 'd_flex' ) ) : nik_the_row();
    if ( 'hero' === nik_get_row_layout() ) { … }
endwhile;

Результат

hero Flexible content, three layouts
quote Each row resolves against its own layout. — The documentation
columns
First cell
Second cell
Third cell

cloneКлон (переиспользовать группу)

В админке

Поля другой группы, переиспользованные без копирования настроек.

В шаблоне

$a = nik_get_field( 'd_clone' );
echo $a['street'] . ', ' . $a['city'];

Результат

Khreshchatyk 1, Kyiv 01001

{
    "street": "Khreshchatyk 1",
    "city": "Kyiv",
    "zip": "01001"
}

tabВкладка / разделитель

В админке

Разбивает длинную группу на вкладки в админке. Значения не хранит.

В шаблоне

// nothing to read

Результат

By design: layout only

accordionАккордеон

В админке

Сворачиваемый блок в админке. Значения не хранит.

В шаблоне

// nothing to read

Результат

By design: layout only

messageСообщение (без значения)

В админке

Пояснение для редактора. Значения не хранит.

В шаблоне

// nothing to read

Результат

By design: layout only

B Условная логика

Правила работают в админке. Скрытое поле сохраняет своё значение.

nik_get_field( 'd_conditional' )   // shown only while Select = live
Visible because Select is "live"

C Двусторонняя связь

Связали одну сторону — вторая записалась сама. На связанной странице ничего не вводили.

nik_get_field( 'd_linked' )                    // here
[1835]

D Field objects and bulk reads

nik_get_field_object( 'd_select' )
{
    "key": "d_select",
    "uid": "nikf_69f0cbb6950774f9644d",
    "label": "Select",
    "name": "d_select",
    "type": "select",
    "instructions": "",
    "required": false,
    "width": 100,
    "choices": [
        "draft",
        "review",
        "live"
    ],
    "settings": null,
    "value": "live"
}
nik_get_sub_field_object( 'value' )   // inside a row
{
    "key": "value",
    "label": "Value",
    "type": "number",
    "width": 50,
    "required": 0
}
nik_get_fields()
47 fields: tab_basics, d_message, d_accordion, d_text, d_textarea, d_number, d_range, d_email, d_url, d_password, d_wysiwyg, tab_choices …

E Другие цели

Тот же API, адресация через option / user_N / term_N.

nik_get_field( 'o_company', 'option' )
NikDimon Products
nik_get_field( 'o_logo', 'option' )
while ( nik_have_rows( 'o_socials', 'option' ) ) …
nik_get_field( 'u_job', 'user_1' )
Plugin author
nik_get_field( 'c_tagline', 'term_15' )
NULL

F Группа полей, объявленная в коде

Регистрируется из PHP-файла, поэтому конфигурацию можно держать в git.

nik_add_local_field_group( array(
    'key'    => 'ncf-local',
    'fields' => array( array( 'key' => 'l_badge', 'type' => 'text' ) ),
) );
nik_get_field( 'l_badge' )
Declared in PHP

G Блок Гутенберга

Блок, атрибуты которого — это группа полей; его шаблон читает их тем же API.

H Шорткоды

Для тех, кто работает в редакторе контента, а не в шаблонах.

[nik_cf_field field="d_text"]
A complete custom fields toolkit
[nik_cf_field field="nope" default="fallback"]
fallback
[nik_cf_gallery field="d_gallery" size="thumbnail"]
[nik_cf_group group="ncf-address"]

I Выборка по значению поля

Значения лежат под стабильным идентификатором, поэтому nik_meta_key() превращает знакомое имя поля в ключ, который нужен WP_Query.

nik_meta_key( 'd_specs', '0_name' )
_nik_cf_uid_nikf_659b3011241c91f7612f_0_name
'meta_query' => array( array(
    'key'   => nik_meta_key( 'd_specs', '0_name' ),
    'value' => 'Weight',
) )
Nik Custom Fields — живое демо
nik_meta_key( 'd_sections', '0_items_1_label' )   // any depth
Nik Custom Fields — живое демо
'meta_key' => nik_meta_key( 'd_number' ),
'orderby'  => 'meta_value_num'
Nik Custom Fields — живое демо

J REST API

Включается отдельно для каждой группы. У этой группы включено.

endpointwhat it does
GET /wp-json/wp/v2/pages/943core response gains a nik_fields object
GET /wp-json/nik-cf/v1/fields/page/943values in their return format
POST /wp-json/nik-cf/v1/fields/page/943write values
GET /wp-json/nik-cf/v1/field-groupsthe configuration itself
GET /wp-json/nik-cf/v1/options/ncf-demo-optionsan options page

K Форма на фронтенде

Те же рендереры и та же валидация, что и в метабоксе. Показывается только тому, кто может править эту страницу.

Hidden: a front-end form needs a logged-in user with edit_post on this page. That check runs when rendering and again when accepting the submission.