以下是场景:
在我的插件中,我想在帖子/页面编辑器上显示一个元框。
我希望metabox完全像WordPress的“自定义字段”metabox(添加另一个、删除、更新、自动填充下拉列表、输入新链接、AJAX magic等);有几个细微的区别:
我要的不是“Name”和“Value”,而是“Target”、“Name”和“Value”
与其将它们全部保存为自动显示在WP自定义字段元框中的“公共”自定义字段,不如将它们全部存储为“专用”命名空间字段中的单个多维数组。。。即。,_myplugin_custom_fields = array( 1 => array( \'target\' => \'mytarget1\', \'name\' => \'myname1\', \'value\' => \'myvalue1\' ), 2 => array( \'target\' => \'mytarget2\', \'name\' => \'myname2\', \'value\' => \'myvalue2\' ) )
我花了一整天的时间在WP Core的纠结网络中挖掘,还没有找到一个简单的方法来实现这一点。如果我根据目前的理解继续前进,我将最终从大量php和js文件中复制数百行核心代码。
WordPress Answers land中有人能帮我指出正确的方向吗?我在主题和插件中添加和利用元盒方面有着丰富的经验,但这一点让我完全困惑。
如果我不清楚,请大声说出来。
提前感谢所有回复者!
SO网友:Guru 2.0
我正在用名称保存自定义字段_meta_whatever
. 以下划线开头的名称会阻止WordPress在普通帖子的下拉框中显示自定义字段。
为了保存在数组中,我使用了如下HTML代码。
...
<input type="text" class="short" name="_events_meta[startDate]" id="_events_meta[startDate]" value="<?php if(!empty($meta[\'startDate\'])) echo $meta[\'startDate\']; ?>"/>
<input type="text" class="extrashort" name="_events_meta[startTime]" id="_events_meta[startTime]" value="<?php if(!empty($meta[\'startTime\'])) echo $meta[\'startTime\']; ?>"/>
...
为了检索元数据,这是我正在使用的代码
...
$meta = get_post_meta($post->ID,\'_events_meta\',TRUE);
...
现在我有了一个assoziative数组
$meta
其中键名在
id
-的属性
input
-要素
为了节省开支,我使用这样的代码
...
$new_data = $_POST[\'_events_meta\'];
...
add_post_meta($post_id,\'_events_meta\',$new_data,TRUE);
...
因此,它保存为中的一条记录
wp_postsmeta
希望这对我有帮助,并从我这边清楚地表达出来?