在wordpress小部件管理页面中获取未知数量的选项

时间:2012-03-11 20:55:52

标签: php javascript wordpress

我制作了一个wordpress插件,可以获取未知数量的Google日历供稿,并显示小部件中每个日历的下一个事件。它有效,但是现在我已经将代码硬编码到了代码中。它似乎不是很好的做法所以我正在计划一个管理界面。对于我添加的每个Feed,有三条信息与它们一起存储在一个数组中:a)feed url。 b)饲料的昵称。 c)如果要显示昵称。

这是一个丑陋的管理界面模型,我只是为了表明这个想法: Screenshot of mockup

我的问题:

  1. 我知道所有教程如何将一条信息存储在一个变量中。但是如何存储未知数量的?我可以使用带有$ instance变量的数组吗?我真的没有从我见过的代码示例中了解如何做到这一点。

  2. 如何使其动态化,因此对于我添加的每个Feed,它会立即显示在界面中?能够改变它们的顺序会很棒。

  3. 我想学习并且关于第二个问题我认为当我在那里时,我可以用javascript中的某些东西。但对于第一个问题,我不知道从哪里开始寻找。因此,如果有人能给出一些提示并朝着正确的方向发展,我将非常感激。

    更新

    感谢您的投入。我真的需要腾出一些时间来尝试实现这一点,但我可能还需要几天时间。对我来说最有帮助的答案得到了赏金......

3 个答案:

答案 0 :(得分:1)

为什么不为这个插件创建一个新的表wp_feedwhatever或者类似的,然后为每个feed创建一个记录。

另一种方式(WordPress倾向于使用很多)是序列化数据 - 这也是一个痛苦的工作。

动态部分可以使用jQuery完成。

答案 1 :(得分:1)

Widgets API可能有所帮助。这是用于创建窗口小部件的codex。我认为这可能是处理你想要实现的目标的最佳方式。如果你看一下底部有一个小部件的例子。通过这个,你可以创建calander小部件的多个实例,每个实例将有你想要的三个选项。

您可以在WP_Widget :: form()中收集三个字段的用户信息。

WP_Widget :: update()用于将信息存储在数据库中。 Wordpress很好地为你做复杂的事情。

WP_Widget :: widget()用于获取数据并在窗口小部件中使用它。

答案 2 :(得分:1)

您可以使用add_option()update_option()保存数组并阅读get_option() 如果您打算存储超过20个,我建议不要这样做。

<?php
$feeds = array(
    0 => array(
        'feedUrl' => 'http://calander.google.com/calname1',
        'nickname' => 'first calander',
        'useNick' => false
    ),
    1 => array(
        'feedUrl' => 'http://calander.google.com/calname2',
        'nickname' => 'birtday calander',
        'useNick' => true
    ),
    2 => array(
        'feedUrl' => 'http://calander.google.com/calname3',
        'nickname' => 'take out garbage days calander',
        'useNick' => false
    ),
);
add_option('calender_feeds', $feeds, '', 'no');
?>


<?php
//read feeds
$feeds = get_option('calender_feeds');
?>

正如动态添加多个字段的建议我建议使用jQuery。