如何使用设置API设置多维数组

时间:2012-08-17 作者:danbrown

我正在写一个课程信息插件。大多数课程信息都与一篇帖子(一种自定义的“课程”帖子类型)相关,因此我将大部分信息放在了Posteta表中。但有些信息与任何帖子都不相关,例如场馆信息。我正在使用选项表来存储这些信息。

我添加了一组选项页面,并使用设置API编辑基本信息。问题是有些信息是动态的,而且更加复杂:

我有一个场馆页面,在那里我需要支持添加新场馆和编辑它们。每个场馆都有一个标题、三条地址线和一个邮政编码。场馆阵列的一个例子是:

array(
    1 => array(
                \'venue_title\' = \'Edge Hill University, Ormskirk\',
                \'address_1\'   = \'20 Edge Lane\',
                \'address_2\'   = \'Ormskirk\',
                \'address_3\'   = \'Lancashire\',
                \'postcode\'    = \'L12 6EA\'
         ),
    2 => array(
                \'venue_title\' = \'Edge Hill University, Aintree\',
                \'address_1\'   = \'12 Aintree Close\',
                \'address_2\'   = \'Aintree\',
                \'address_3\'   = \'Liverpool\',
                \'postcode\'    = \'L48 6PQ\'
         ),
    3 => array ( ...etc other venues)

);
因此,要进行任何更改,我使用文本字段。这些由设置api处理。name属性和内容是从$\\u GET变量动态设置的。

<input type="text" name="venues[<?php echo $venue_id; ?>][venue_title]" value="<?php echo $venues[$venue_id][\'venue_title\']; ?>" />
输出为

<input type="text" name="venues[2][venue_title]" value="<?php echo $venues[2][\'venue_title\']; ?>" />
我只有一组在设置api中注册的字段,我认为这就是问题所在,因为当我更改一个字段时,它会删除所有其他字段,只插入新字段。

所以在我看来,上面的代码应该只更新$VICENTES[2][VICENTE\\U标题],但它会覆盖所有场馆。我认为,因为只有一组字段被注册,所以它只会更新,就像有一组字段一样。有人知道一个简单的方法来实现这一点吗?

谢谢

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

查看验证函数(register\\u setting调用引用的函数)。返回的内容将替换数据库中的整个设置。因此,如果它没有获取设置,然后更改它并返回整个设置,那么您将丢失没有返回的数据。

结束

相关推荐