acf_form()
Відображає форму для додавання/редагування записів (постів).
Форму можна зареєструвати за допомогою функції acf_register_form() .
Використання коду в модальному вікні AJAX
При відображенні форми ACF в модальному вікні AJAX (або будь-якому іншому методі, що динамічно додається) зверніть увагу, що для цієї сторінки буде потрібно додатковий код PHP і JavaScript.
PHP
Наступні функції повинні бути запущені в тілі сторінці (в тезі <body> ) або з використанням хука wp_footer . Ця функція створить приховані поля WYSIWYG, які необхідні для JS шаблонів і підключення WP media спливаючих вікон// Enqueue uploadedr scripts. acf_enqueue_uploader();
JS
Наступний JS повинен бути запущений після завершення запиту AJAX та додавання нового HTML (що містить форму ACF) у DOM. Це дозволить ACF ініціалізувати поля у новому доданому HTML.// Trigger the append action and provide the newly appended jQuery element. acf.do_action( 'append', $('#popup-id') );
acf_form_head()
Хоча ця функція і відображає форму, вона не обробляє форму під час відправки. Це завдання виконує інша функція: acf_form_head() . Щоб форма могла зберігати дані, вам потрібно буде розмістити функцію acf_form_head() у верхній частині шаблону сторінки, перш ніж відображатиметься HTML.
Безпека
Починаючи з версії 5.6.5, ACF використовує функцію wp_kses_post() для очищення вмісту та видалення шкідливих сценаріїв. При необхідності цю очистку можна вимкнути, змінивши налаштування kses
форми на false .
acf_form_front::render_form()
Хуків немає.
Повертає
null
. Нічого.
Використання
<?php acf_form($ settings); ?>
-
$settings
(int/масив) Масив налаштувань або ID зареєстрованої форми. Масив може містити такі ключі:
$settings = [ 'id' => 'acf-form', 'post_id' => false, 'new_post' => false, 'field_groups' => false, 'fields' => false, 'post_title' => false, 'post_content' => false, 'form' => true, 'form_attributes' => array(), 'return' => '', 'html_before_fields' => '', 'html_after_fields' => '', 'submit_value' => __("Update", 'acf'), 'updated_message' => __("Post updated", 'acf'), 'label_placement' => 'top', 'instruction_placement' => 'label', 'field_el' => 'div', 'uploader' => 'wp', 'honeypot' => true, 'html_updated_message' => '<div id="message" class="updated"><p>%s</p></div>', 'html_submit_button' => '<input type="submit" class="acf-button button button-primary button-large" value="%s" />', 'html_submit_spinner' => '<span class="acf-spinner"></span>', 'kses' => true ]
id (рядок)
Унікальний ідентифікатор форми.
Типово: acf-formpost_id (Integer|String)
ID посту використовується для визначення полів, які будуть показані, дані яких будуть показані та оновлені. За промовчанням використовується ID поточного поста. Також може бути визначено як new_post для створення нового посту за збереження.
Типово: falsenew_post (масив)
Якщо попередній аргумент визначено як “new_post”, це налаштування використовується для створення нового посту. Доступні параметри дивіться у функції wp_insert_post .
Типово: falsefield_groups (масив)
Масив ідентифікаторів ID/ ключів груп полів для перевизначення полів, що відображаються у цій формі.
Типово: falsefields (масив)
Масив ідентифікаторів полів ID/ ключів для перевизначення полів, що відображаються у цій формі.
Типово: falsepost_title (Boolean)
Чи потрібно відображати поле title (заголовок) посту у формі.
Типово: falsepost_content (Boolean)
Чи відображати поле content (зміст посту), поле відображається у формі вбудованого редактора WP.
Типово: falseform (Boolean)
Чи потрібно створювати елементи форми. Використовується для додавання до існуючої форми.
Типово: trueform_attributes (масив)
Масив або HTML атрибути елемента форми.
За замовчуванням: array()return (рядок)
URL переадресації після надсилання форми. За промовчанням поточна URL-адреса з параметрами GET ‘?updated=true’.
Спеціальний параметр ‘%post_url%’ буде перетворено на посилання на пост.
Спеціальний параметр ‘%post_id%’ буде перетворено на ID посту.
За замовчуванням: ”html_before_fields (рядок)
Додатковий HTML для додавання перед полями.
За замовчуванням: ”html_after_fields (рядок)
Додатковий HTML для додавання після полів.
За замовчуванням: ”submit_value (рядок)
Текст підпису кнопки для надсилання поста.
Типово: __(“Update”, ‘acf’)updated_message (рядок)
Повідомлення, що відображається над формою після надсилання. Можливо встановити значення false, якщо повідомлення відсутнє.
Типово: __(“Post updated”, ‘acf’)label_placement (рядок)
Визначає розташування полів по відношенню до полів. Можливі варіанти top (зверху над полями) або left (ліворуч поряд з полями).
Типово: ‘top’instruction_placement (рядок)
Визначає, де розміщуються інструкції для полів. Вибір “label” (під ярликами) або “field” (під полями).
За замовчуванням: ‘label’field_el (рядок)
Визначає елементи для обгортки полів. Можливі варіанти ‘div’, ‘tr’, ‘td’, ‘ul’, ‘ol’, ‘dl’.
За замовчуванням: ‘div’uploader (рядок)
Використовувати вбудований WP uploader або базовий input для полів image (картинка) та file (файл). Варіанти ‘wp’ або ‘basic’.
За замовчуванням: ‘wp’honeypot (Boolean)
Чи потрібно додавати приховані поля для запобігання відправленню форми ботами.
Типово: truehtml_updated_message (рядок)
HTML для відображення повідомлення про оновлення.
За замовчуванням: ‘<div id=”message” class=”updated”><p>%s</p></div>’html_submit_button (рядок)
HTML відображення кнопки відправки.
За замовчуванням: ‘<input type=”submit” class=”acf-button button button-primary button-large” value=”%s” />’html_submit_spinner (рядок)
HTML відображення спінера завантаження для кнопки відправки.
За замовчуванням: ‘<span class=”acf-spinner”></span>’- kses (Boolean)
Чи потрібно виконати санітайзинг усіх даних $_POST функцією wp_kses_post() .
Типово: true
Приклади
#1 Редагування простого посту
Цей приклад демонструє, як відобразити базову форму для редагування простого посту.
<?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(); ?>
#2 Редагування специфічних полів посту
Цей приклад демонструє, як відобразити форму, яка редагує метаполя посту.
<?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' => __('Update meta') )); ?> <?php endwhile; ?> </div><!-- #content --> </div><!-- #primary --> <?php get_sidebar(); ?> <?php get_footer(); ?>
#3 Створення спеціального посту
У цьому прикладі показано, як створити новий спеціальний пост із відправкою форми.
<?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' => 'Create new event' )); ?> <?php endwhile; ?> </div><!-- #content --> </div><!-- #primary --> <?php get_sidebar(); ?> <?php get_footer(); ?>
Код acf_form() acf form ACF 5.10.2
function acf_form( $args = array() ) { acf()->form_front->render_form( $args ); }