如何使用相同的meta_key存储多个输入值

时间:2011-03-01 作者:Christoph

有没有办法存储来自多个自定义元框字段的输入值meta_key?我使用以下代码为meta_key \'开始日期\':

function startdate() {
  global $post;
  $custom = get_post_custom($post->ID);
  $startdate = $custom["startdate"][0];
  ?>

<label>Startdate</label><br/>
<input type="text" name="startdate" value="<?php echo $startdate; ?>"/>

<?php }

add_action(\'save_post\', \'save_details\');
function save_details(){
  global $post;
  update_post_meta($post->ID, "startdate", $_POST["startdate"]);
}
如果我有第二个输入字段,如何将其值存储在不同的meta_id 但都一样meta_key (开始日期)?非常感谢!

(如果我使用内置的自定义字段功能,我可以为同一元键保存多个值…)

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

按照建议更改表单:

function startdate() {
    global $post;
    $custom = get_post_custom($post->ID);
    echo "<label>Startdates</label><br/>";
    for ($i=0; $i<count($custom["startdate"]);$i++) {
        echo "<input type=\\"text\\" name=\\"startdate[".$i."]\\" value=\\"".$custom["startdate"][$i]."\\" />";
    }
}
您必须删除并恢复您的个人Posteta条目:

add_action(\'save_post\', \'save_details\');

function save_details($post_id) {
    if ($parent_id = wp_is_post_revision($post_id)) $post_id = $parent_id;

    if (!empty($_POST[\'startdate\']) && is_array($_POST[\'startdate\'])) {
        delete_post_meta($post_id, \'startdate\');
        foreach ($_POST[\'startdate\'] as $startdate) {
            add_post_meta($post_id, \'startdate\', $startdate);
        }
    }
}
然后,当然,您需要向metabox表单添加某种添加/删除机制,可能是通过JS。

SO网友:supermethod

正如t31os 尝试更改表单输入以使用name="startdate[]" 然后在数组中循环保存每个值:

foreach ($_POST["startdate"] as $datevalue) {
    update_post_meta($post->ID, "startdate", $datevalue);
}

结束

相关推荐

在编辑帖子中使用AJAX自定义Metabox

我正在尝试创建一个带有多个文本字段的自定义元框。其想法是,最初有一个文本框,然后您可以单击按钮“添加新内容”,然后添加另一个文本框(使用Ajax;无需为要创建的文本框发布或更新帖子)。我正在使用以下代码(如下),但它根本不起作用。我完全被卡住了;真的需要一些帮助。如果有人能帮我解决这个问题,我甚至愿意捐赠一些现金。http://pastebin.com/usRhiJJ4