在WordPress中保存多个键/值对

时间:2012-11-21 22:06:32

标签: php wordpress settings

在使用WordPress插件获取一定数量的RSS源时,我遇到了一些设计问题。

应该能够由用户配置Feed的URL,这对于固定数量的Feed非常适用。用户可以在相应的“设置”页面上输入这些供稿的网址,这显然使用了WordPress的“设置API”。

然而,我的目标是让用户能够输入未知数量的Feed,以及标签和ID来显示和识别它们。问题在于表示这些数据的方式。我想要的结果是有一个函数返回(类似于):

$feed_categories = array(
    array(
        'id' => 'tools',
        'label' => 'Tools',
    'url' 'example.org/toolsfeed/feed.xml',
),
array(
    'id' => 'questions',
        'label' => 'Questions',
        'url' => 'www.example.com/feeds/questions.xml',
),
    // Etc
);

现在,我知道我可以使用我目前使用的WordPress设置API存储这种数组,但我不确定......

  1. 如果这不是Settings API的用途,
  2. 我如何制作一个允许“无限制”添加三个键值对的部分的选项页面,以及如何解析
  3. 编辑:我开始质疑当前方法的主要原因是,设置(或选项)API有一种简单的方法来为固定数量的项目生成表单,但不是更多。其次,更重要的是,我还没有发现一种创建自定义options.php页面的方法,为了访问传入的POST请求,我需要继续进行验证,格式化和保存发送的配置数据。所以基本上,当我使用Settings API时,创建表单和处理输入的实际方面似乎非常有限。扩展options.php功能的能力会很棒。 (也许我忽视了一个能做我想做的事情的钩子?)

    我查看过“设置”的验证回调,但这会涉及注册一个您不想保存的设置,只是为了访问相应的$_POST密钥。

    另一种选择是这种情况只是制作一个表来存储这些信息。然而,由于这可能是大多数用户长期以来会设置和忘记的事情,我担心这可能是矫枉过正。

    你们中的任何人都知道在不需要太多黑客攻击的情况下在Settings API中实现这一点的好方法,或者这真的只是要求自定义表吗?

    我很想听听你对此的看法,以及为什么这么想。

1 个答案:

答案 0 :(得分:3)

最简单的方法就像你说的那样,只需将它存储在数据库中。这使事情变得简单。这不是太多的数据,但它不一定是“过度杀伤”,你只是使用可用的东西。

如果你真的不想使用数据库,你可以做的一个小“黑客”是使用选项API存储信息。通常你只需要存储一个键值:

update_option('some_option','XYZ'); 

但是,如果需要,可以将整个数组存储为值。使用您的示例:

update_option('feed_categories',$feed_categories);

这样做的唯一缺点是,因为你要存储整个数组,所以当你更新feed_categories时,你需要

  1. 阅读整个数组
  2. 更改要更改的阵列中的任何设置
  3. 再次保存整个阵列。
  4. 所以你不能做只需要获取数组的第一部分等等。你必须每次都使用整个数组。