在开发用于获取一定数量的 RSS 提要的 WordPress 插件时,我遇到了一些设计问题。
提要的 URL 应该能够由用户配置,这对于固定数量的提要来说工作得非常好。用户可以在相应的设置页面上输入这些提要的 URL,该页面显然使用了 WordPress 的设置 API。
然而,我的目标是让用户能够输入未知数量的提要,以及用于显示和识别它们的标签和 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 来存储这种数组,但我不确定...
- 如果这不是 Settings API 的用途,并且
- 如何制作一个允许“无限制”添加三个键值对部分的选项页面,以及如何解析该页面
编辑:我开始质疑当前方法的主要原因是,设置(或选项)API 有一种简单的方法可以为固定数量的项目(但不能更多)生成表单。其次,更重要的是,我还没有找到创建自定义 options.php
页面的方法,需要该页面才能访问传入的 POST 请求,之后我需要继续验证、格式化并保存发送的配置数据。所以基本上,当我使用 Settings API 时,创建表单和处理输入的实际方面对我来说似乎相当有限。如果能够扩展 options.php
的功能就太好了。 (也许我忽略了一个可以实现我想要的功能的钩子(Hook)?)
我已经查看了“设置”的验证回调,但这将涉及注册一个您并不真正想保存的设置,只是为了访问相应的 $_POST
键。
另一种选择是这种情况只是制作一个表来存储这些信息。然而,由于这可能是大多数用户会设置并忘记很长一段时间的东西,我担心它可能有点矫枉过正。
你们中有人知道在设置 API 中实现这一点而无需太多黑客攻击的好方法吗?还是这真的只需要一个自定义表格?
我很想听听您对此的看法以及您为什么这么认为。
最佳答案
最简单的方法就像你说的那样,只需将其存储在数据库中即可。这使得事情变得美好而简单。数据并不多,但也不一定“杀伤力大”,您只是使用可用的数据。
如果您确实不想使用数据库,您可以做的一个小“技巧”是使用选项 API 存储信息。通常您只需存储一个键值,如下所示:
update_option('some_option','XYZ');
但是,如果您愿意,您可以将整个数组存储为一个值。使用您的示例:
update_option('feed_categories',$feed_categories);
这样做的唯一缺点是,由于您要存储整个数组,因此当您更新 feed_categories 时,您需要
- 读取整个数组
- 更改数组中您想要更改的任何设置
- 再次保存整个数组。
所以你不能做一些事情,比如只获取数组的第一部分等。你必须每次都使用整个数组。
关于php - 在 WordPress 中保存多个键/值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13502820/