我只需要将一个自定义字段(来自metabox.io)添加到现有表单的前端。有人能澄清一下步骤吗。我尝试了以下教程:https://voodoopress.com/add-a-meta-box-to-use-custom-fields-on-front-end-post-form/但我对向数组中添加输入字段等步骤感到困惑。如果我们从头开始创建表单,是否只需要这样做?如果我使用的是现有表单,该数组是否已经存在?
我只需要有人澄清一下,如果用户编辑页面以及提交,如何将metabox的值输入表单上的输入字段并保存数据。
**更新
管理代码:
function get_dates( $meta_boxes ) {
$prefix = \'prefix-\';
$meta_boxes[] = array(
\'id\' => \'mydates\',
\'title\' => esc_html__( \'Dates Available\', \'mydates\' ),
\'post_types\' => array( \'listing\', \'page\' ),
\'context\' => \'side\',
\'priority\' => \'low\',
\'autosave\' => false,
\'fields\' => array(
array(
\'id\' => $prefix . \'mydates\',
\'type\' => \'date\',
\'name\' => esc_html__( \'Date Picker\', \'mydates\' ),
\'desc\' => esc_html__( \'Select multiple dates\', \'mydates\' ),
\'clone\' => true,
\'sort_clone\' => true,
),
),
);
return $meta_boxes;
}
add_filter( \'rwmb_meta_boxes\', \'get_dates\' );
前端表单(编辑和提交表单)
$mydates = if(isset($_POST[\'prefix-mydates\'])) echo $_POST[\'prefix-mydates\'];
<fieldset>
<input type="text" value="" id="prefix-mydates" class="rwmb-date hasDatepicker" size="60" tabindex="20" name="prefix-mydates">
</fieldset>
最合适的回答,由SO网友:Sally CJ 整理而成
这对我很有用:
在模板文件(与现有表单一起使用)中,在get_header();
呼叫/线路,添加此代码:
global $my_dates_MB;
// If you changed the meta box ID (i.e. mydates), change it also below.
add_filter( \'rwmb_show_mydates\', \'__return_false\' );
$meta_boxes = get_dates( [] );
$my_dates_MB = rwmb_get_meta_box( $meta_boxes[0] );
if ( isset( $_POST[\'my_dates_post_ID\'] ) ) {
// Save the meta data.
$my_dates_MB->save_post( $_POST[\'my_dates_post_ID\'] );
}
// Enqueue styles and scripts.
add_action( \'wp_enqueue_scripts\', [ $my_dates_MB, \'enqueue\' ] );
//$my_dates_MB->enqueue();
然后更换:
$mydates = if(isset($_POST[\'prefix-mydates\'])) echo $_POST[\'prefix-mydates\'];
<fieldset>
<input type="text" value="" id="prefix-mydates" class="rwmb-date hasDatepicker" size="60" tabindex="20" name="prefix-mydates">
</fieldset>
。。使用此选项:(
UPDATED; May 02 2018)
<?php
global $my_dates_MB;
// Get the current post ID.
$post_id = get_the_ID();
// Set the post ID for the "meta box".
$my_dates_MB->set_object_id( $post_id );
// Show the meta box.
$my_dates_MB->show();
?>
<input type="hidden" name="my_dates_post_ID" value="<?php echo $post_id; ?>" />
这将打印自定义中定义的整个“元框”
get_dates()
函数(顺便说一句,将其名称更改为唯一的名称),但这不应该成为问题,因为元框只有一个字段。
你会得到这样的结果:(不包括“提交”按钮)