Описание
Отображает форму для добавления или редактирования записи. Доступно множество параметров для настройки формы — они задаются добавлением значений в массив $options, как описано ниже.
Также форму можно зарегистрировать с помощью функции acf_register_form().
Параметры
<?php acf_form( $settings ); ?>$settings
(String | Array) Массив параметров или идентификатор зарегистрированной формы.
id
(String) Уникальный идентификатор формы. По умолчанию — «acf-form».'id' => 'acf-form',post_id
(Integer | String) ID записи, используемый для определения отображаемых полей, места загрузки данных и места их сохранения. По умолчанию используется ID текущей записи. Также можно передать значение «new_post», чтобы при отправке создать новую запись.'post_id' => false,new_post
(Array) Если предыдущему параметру задано значение «new_post», этот параметр используется для создания записи. Доступные параметры см. в документации функции wp_insert_post.'new_post' => false,field_groups
(Array) Массив ID или ключей групп полей, переопределяющий поля, отображаемые в этой форме.'field_groups' => false,fields
(Array) Массив ID или ключей полей, переопределяющий поля, отображаемые в этой форме.'fields' => false,post_title
(Boolean) Показывать ли текстовое поле заголовка записи. По умолчанию — false.'post_title' => false,post_content
(Boolean) Показывать ли редактор содержимого записи. По умолчанию — false.'post_content' => false,form
(Boolean) Создавать ли элементform. Полезно при добавлении формы внутрь уже существующей формы. По умолчанию — true.'form' => true,form_attributes
(Array) Массив HTML-атрибутов элемента формы.'form_attributes' => array(),return
(String) URL, на который будет выполнено перенаправление после отправки формы. По умолчанию используется текущий URL с GET-параметром «?updated=true».
Специальная подстановка «%post_url%» будет заменена постоянной ссылкой записи.
Специальная подстановка «%post_id%» будет заменена ID записи.'return' => '',html_before_fields
(String) Дополнительный HTML, добавляемый перед полями.'html_before_fields' => '',html_after_fields
(String) Дополнительный HTML, добавляемый после полей.'html_after_fields' => '',submit_value
(String) Текст, отображаемый на кнопке отправки.'submit_value' => __('Обновить', 'acf'),updated_message
(String) Сообщение, отображаемое над формой после перенаправления. Чтобы не показывать сообщение, можно задать значение false.'updated_message' => __('Запись обновлена', 'acf'),label_placement
(String) Определяет расположение подписей полей относительно самих полей. По умолчанию — «top».
Возможные значения: «top» (над полями) или «left» (слева от полей).'label_placement' => 'top',instruction_placement
(String) Определяет расположение инструкций полей относительно самих полей. По умолчанию — «label».
Возможные значения: «label» (под подписями) или «field» (под полями).'instruction_placement' => 'label',field_el
(String) Определяет элемент, используемый для обёртки поля. По умолчанию — «div».
Возможные значения: «div», «tr», «td», «ul», «ol», «dl».'field_el' => 'div',uploader
(String) Определяет, использовать ли загрузчик WP или обычное поле ввода для изображений и файлов. По умолчанию — «wp».
Возможные значения: «wp» или «basic».'uploader' => 'wp',honeypot
(Boolean) Добавлять ли скрытое поле ввода для обнаружения автоматической отправки формы. По умолчанию — true.'honeypot' => true,html_updated_message
(String) HTML-код, используемый для вывода сообщения об обновлении.'html_updated_message' => '<div id="message" class="updated"><p>%s</p></div>',html_submit_button
(String) HTML-код, используемый для вывода кнопки отправки.'html_submit_button' => '<input type="submit" class="acf-button button button-primary button-large" value="%s" />',html_submit_spinner
(String) HTML-код, используемый для вывода индикатора загрузки на кнопке отправки.'html_submit_spinner' => '<span class="acf-spinner"></span>',kses
(Boolean) Очищать ли все данные$_POSTс помощью функцииwp_kses_post(). По умолчанию — true.'kses' => true
История изменений
ksesдобавлен в версии 5.6.5.uploaderдобавлен в версии 5.2.4.honeypotдобавлен в версии 5.3.4.html_updated_message,html_submit_buttonиhtml_submit_spinnerдобавлены в версии 5.5.10.
Примеры
Редактирование текущей записи
В этом примере показано, как вывести простую форму для редактирования текущей записи.
page-basic-form.php
<?php acf_form_head(); ?>
<?php get_header(); ?>
<div id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php while ( have_posts() ) : the_post(); ?>
<?php acf_form(); ?>
<?php endwhile; ?>
</div><!-- #content -->
</div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>Редактирование определённой записи
В этом примере показано, как вывести форму для редактирования метаполей определённой записи.
page-specific-form.php
<?php acf_form_head(); ?>
<?php get_header(); ?>
<div id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php while ( have_posts() ) : the_post(); ?>
<?php acf_form(array(
'post_id' => 123,
'post_title' => false,
'post_content' => false,
'submit_value' => __('Обновить метаданные')
)); ?>
<?php endwhile; ?>
</div><!-- #content -->
</div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>Создание определённой записи
В этом примере показано, как создать новую запись при отправке формы.
page-new-form.php
<?php acf_form_head(); ?>
<?php get_header(); ?>
<div id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php while ( have_posts() ) : the_post(); ?>
<?php acf_form(array(
'post_id' => 'new_post',
'new_post' => array(
'post_type' => 'event',
'post_status' => 'publish'
),
'submit_value' => 'Создать новое событие'
)); ?>
<?php endwhile; ?>
</div><!-- #content -->
</div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>Примечания
Отображение в модальном окне AJAX
При отображении формы ACF в модальном окне AJAX (или при использовании любого другого метода динамического добавления) обратите внимание, что странице потребуется дополнительный код PHP и JavaScript.
PHP
Следующую функцию необходимо выполнить внутри тегов<body>и до действия «wp_footer». Она создаст скрытое поле WYSIWYG и подключит необходимые JS-шаблоны для всплывающих окон медиабиблиотеки WP.// Подключаем скрипты загрузчика. acf_enqueue_uploader();JS
Следующий JS-код необходимо выполнить после завершения AJAX-запроса и добавления нового HTML-кода (содержащего форму ACF) в DOM. Это позволит ACF инициализировать поля в добавленном HTML-коде.// Вызываем действие append и передаём новый добавленный элемент jQuery. acf.do_action('append', $('#popup-id'));
acf_form_head()
Важно отметить, что функция acf_form() отображает форму, но не обрабатывает её при отправке. Эта задача возложена на другую функцию — acf_form_head(). Чтобы форма могла сохранять данные, разместите функцию acf_form_head() в начале шаблона страницы, до вывода любого HTML-кода.
Безопасность
Начиная с версии 5.6.5 ACF использует функцию wp_kses_post() для очистки содержимого и удаления вредоносных скриптов. При необходимости эту очистку можно отключить, установив параметр формы kses в значение false.
Обновлено: 30.09.2026