如何在前端的现有表单中显示自定义域?

时间:2018-04-13 作者:abc0213

我只需要将一个自定义字段(来自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>

1 个回复
最合适的回答,由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() 函数(顺便说一句,将其名称更改为唯一的名称),但这不应该成为问题,因为元框只有一个字段。

你会得到这样的结果:(不包括“提交”按钮)

enter image description here

结束