2020-06-28 / 1927阅 / 悠然
显示用于添加或编辑帖子的表单。有许多可用于自定义表单的设置,这些设置是通过添加到$options
数组来设置的,如下所述。
您也可以使用acf_register_form()函数注册表单。
<?php acf_form( $settings ); ?>
(字符串|数组)注册表单的设置或“ id”的数组。
'id' => 'acf-form',
'post_id' => false,
'new_post' => false,
'field_groups' => false,
'fields' => false,
'post_title' => false,
'post_content' => false,
form
元素。添加到现有表单时很有用。默认为true。'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>',
$_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版中添加本示例演示了如何显示基本表单来编辑当前帖子。
<?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(); ?>
本示例演示了如何显示用于编辑特定帖子的meta字段的表单。
<?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(); ?>
本示例演示了提交表单时如何创建新帖子。
<?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(); ?>
在AJAX模式(或任何其他动态附加的方法)中显示ACF表单时,请注意,该页面将需要一些额外的PHP和JavaScript代码。
<body>
标记内以及“ wp_footer”操作之前运行以下功能。这将创建一个隐藏的WYSIWYG字段,并将所需的JS模板排入WP媒体弹出窗口。// Enqueue uploadedr scripts.acf_enqueue_uploader();
// Trigger the append action and provide the newly appended jQuery element.acf.do_action('append', $('#popup-id'));
重要的是要注意,尽管该acf_form()
函数将显示一个表单,但在提交时将不处理该表单。该任务由另一个名为的函数处理acf_form_head()
。为了允许表单保存数据,您需要acf_form_head()
在呈现任何HTML之前将函数放在页面模板的顶部。
从5.6.5版开始,ACF使用wp_kses_post()函数清理内容并清除恶意脚本。如果需要,可以通过将表单kses
设置更改为false 来禁用此清理功能。