acf_form() ACF 1.0

Відображає форму для додавання/редагування записів (постів).

Форму можна зареєструвати за допомогою функції 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-form

  • post_id (Integer|String)
    ID посту використовується для визначення полів, які будуть показані, дані яких будуть показані та оновлені. За промовчанням використовується ID поточного поста. Також може бути визначено як new_post для створення нового посту за збереження.
    Типово: false

  • new_post (масив)
    Якщо попередній аргумент визначено як “new_post”, це налаштування використовується для створення нового посту. Доступні параметри дивіться у функції wp_insert_post .
    Типово: false

  • field_groups (масив)
    Масив ідентифікаторів ID/ ключів груп полів для перевизначення полів, що відображаються у цій формі.
    Типово: false

  • fields (масив)
    Масив ідентифікаторів полів ID/ ключів для перевизначення полів, що відображаються у цій формі.
    Типово: false

  • post_title (Boolean)
    Чи потрібно відображати поле title (заголовок) посту у формі.
    Типово: false

  • post_content (Boolean)
    Чи відображати поле content (зміст посту), поле відображається у формі вбудованого редактора WP.
    Типово: false

  • form (Boolean)
    Чи потрібно створювати елементи форми. Використовується для додавання до існуючої форми.
    Типово: true

  • form_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)
    Чи потрібно додавати приховані поля для запобігання відправленню форми ботами.
    Типово: true

  • html_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

Приклади

0

#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(); ?>
0

#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(); ?>
0

#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 5.10.2

function acf_form( $args = array() ) {

	acf()->form_front->render_form( $args );

}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *