2020-06-28 / 2210阅 / 悠然
显示用于添加或编辑帖子的表单。有许多可用于自定义表单的设置,这些设置是通过添加到$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' => truekses 在版本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 来禁用此清理功能。