如何使用名称/值管理用户输入字段创建自定义Meta Box?

时间:2014-06-15 作者:user1575949

我研究了许多关于如何使用创建/添加自定义元框的教程add_meta_box() Wordpress功能。我找不到任何示例,其中完成的元框可以让管理员用户同时输入这两个选项key/value 成对的,如Custom_Fields?

编辑:删除了插件链接URL,因为没有足够的代表点:

我想将此功能添加到我自己的自定义元框以及WordPress插件元框字段的WebDevStudios/自定义元框和字段中。

为了澄清,我想创建一个元框,管理员用户可以向其中添加名称和值,如下图所示,该图取自WP自己的自定义字段元框:

enter image description here

2014年6月19日编辑:

我对Custom Fields 在前端查询时不正确:

        printf( \'<pre>%s</pre>\', var_export( get_post_meta($post->ID,"my_custom_filed_key"), true ) );
我看到了my_custom_field_key 生成索引数组:

array (
0 => \'val  1\',
1 => \'val  2\',
2 => \'val  3\',
)
我想我要实现的是一个关联数组?

array (
\'my key name 1\' => \'my val 1\',
\'my key name 2\' => \'my val 2\',
\'my key name 3\' => \'my val 3\',
)
这是add_meta_box 我的代码的功能部分:

function my_meta_boxes($post) {
        add_meta_box(
            \'my_meta\',          // Unique ID
            esc_html__( \'Reviews\', \'example\' ), // Title
            \'my_meta_box\',  // Callback function
            \'my-post\',          // Admin page (or post type)
            \'side\',               // Context
            \'default\'             // Priority
        );
 }

/* Display the post meta box. */
function my_meta_box() { 
        wp_nonce_field( basename( __FILE__ ), \'my_post_nonce\' ); 

        $meta = get_post_custom($post->ID);
        $meta[\'my_meta\'] = maybe_unserialize($meta[\'my_meta\'][0]);
        ?>
        <table style="width:100%;">
                <tr style="width:100%;">
                <td><textarea style="width:90%;" rows="1" name="my_meta[]"> <?php echo $meta[\'my_meta\'][0] ?></textarea></td>
                </tr>
                <tr style="width:100%;">
                <td><textarea style="width:90%;" rows="1" name="my_meta[]"> <?php echo $meta[\'my_meta\'][1] ?></textarea></td>
                </tr>
                <tr style="width:100%;">
                <td><textarea style="width:90%;" rows="1" name="my_meta[]"> <?php echo $meta[\'my_meta\'][2] ?></textarea></td>
                </tr>
        </table>
<?php }
我想知道add_meta_box $callbacks_args 会在这里帮助我,但我还没有完全理解它?

非常感谢。

1 个回复
最合适的回答,由SO网友:kaiser 整理而成

帮助您了解表单的工作方式:它们添加到$_POST 按窗体字段排列的数组name 论点

<input type="text" name="foo" value="Fooo!" />
将产生

$_POST (array) =>
    foo => Fooo!

<input type="text" name="foo[bar]" value="Bar." />
<input type="text" name="foo[baz]" value="Baz." />
将产生

$_POST (array) =>
    foo => (array) =>
        bar => Bar.
        baz => Baz.
等等。

结束

相关推荐

将复选框值保存在Metabox中

我为特定页面模板创建了metabox。现在我需要保存复选框的选中或未选中值。我该怎么做?这是我的代码: add_action(\'add_meta_boxes\', \'add_home_meta\'); function add_home_meta() { global $post; if(!empty($post)) { $pageTemplate = get_post_meta($post->