设置API存储多个数组

时间:2012-08-19 作者:dev-jim

如果我没有弄错的话,设置api只在wp\\U选项表中存储一个数据数组。只能更改数组中的字段数据。

如果我想在同一个表中添加具有相同数组结构但值不同的多个数组,该怎么办。

我的意思是:

$data = array(
    \'1\' = array(
        \'cpt\'=> \'cpt1\',
        \'date\'=> \'date1\',
        \'role\'=> \'subscriber\'            
    ),
    \'2\' = array(
        \'cpt\'=> \'cpt2\',
        \'date\'=> \'date2\',
        \'role\'=> \'eiditor\'       
    ).....etc
 );
我可以添加新数组,编辑其中一个数组中的字段,或者删除不需要的数组。

我在goolge上找到的只是关于如何在单个数组中存储数据的教程,但我确实看到一些插件可以做到这一点,但我无法理解他们是如何在我目前的编程水平下做到这一点的。

我不想创建另一个自定义表,因为我要存储的数据并不多。我只存储一些设置(用户、帖子类型、帖子日期),以供进一步使用。

如有任何指导或建议,将不胜感激。

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

我把它放在表格里,这样它就知道它的编辑了:

<form method="post" action="options.php">

     <?php settings_fields(\'venues_section\'); ?>
     <input type="hidden" name="editmode" value="<?php echo $editmode; ?>" />
     <input type="hidden" name="venue_id" value="<?php echo $venue_id; ?>" />
     <?php submit_button(); ?>

</form>
然后,接收验证函数可以通过执行以下操作来处理此问题:

function venues_validation_callback($input){

    $venues = get_option(\'venues\'); // Get the current options from the db (Edit 
                                    // this and return the full modified version)
    $editmode = $_POST[\'editmode\'];  // add, edit or delete     
    $venue_id = $_POST[\'venue_id\'];             

    if($editmode == \'add\'){

        // Do Add Logic

        return $venues;

    elseif($editmode == \'edit\') {

        // Do Edit Logic

        return $venues;

    }
    elseif($editmode == \'delete\'){

        // Do Delete Logic

        return $venues;

    }

    return $input; // only triggered if none of the above are called
}
这只是为了证明它的可能性。还有很多其他的细节,这也是一个非常定制的解决方案。我已经让它工作了,但它花了我一周的时间,让我有些头疼。老实说。但这就是我所能做的。希望有一个插件可以做到这一点,我没有找到。如果我有时间的话,如果还没到的话,我会很高兴的。

SO网友:danbrown

我只是找到了一种方法来做你想做的事。。。奥托只是帮了我一把here.

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

所以你可以在那里对数组进行所有的操作。。。

结束