2011-03-15 36 views
2

我创建了一个小部件,我需要允许用户从一系列选项中进行选择。选项是来自数据库中另一个表的书籍。如何在wordpress小部件中保存复选框数组?

我试图用这样的代码:

<input type="text" name="<?PHP $this->get_field_name("books[]"); ?>"> 

但是想救时失败。是否有可能传递这样的选项数组并保存它们?如果不是,那将是一个替代解决方案。我能通过值是这样的:

book1 
book2 
book3 

如果我这样做,我就必须有在更新方法循环遍历所有的图书数据库,以确定哪些检查,什么是不?我接受建议。

+1

我很困惑。你的问题是关于复选框,但你的HTML正在渲染一个文本框。我错过了什么吗? – vicTROLLA

回答

2

我会做这样的事情:

首先,存储选项,并选择他们作为一个数组:

$options = get_option("pluginName_books"); 

update_option("pluginName_books",$_REQUEST['books']); 

使用此为您的表单中的字段:

<input type="text" name="books[]" value="the_value"> 

或做为复选框:

<input type="checkbox" name="<?PHP $this->get_field_name("books[]"); ?>"> 
+0

这就是我需要的。我将复选框的名称设置为books [],然后在wp_widget类的update方法中使用update_option函数。完美的作品。我没有考虑使用这些选项作为额外的存储机制。谢谢。 – TheWeightOfTheWorld

+0

很酷。很高兴它的工作;) –

+0

谢谢你,你的答案是有益的,但我想提到,在大多数情况下,它会被implode(',',$ _REQUEST ['books'])并保存插件的实例。在前端显示的窗体部件上,你可以爆炸(',',$ instance ['book']); - 因此并不总是需要将值保存到选项表中 –

1

刚刚有同样的问题。我通过将我的名称标签的数组部分附加到我的get_field_name调用之外来解决它:

name="<?php echo $this->get_field_name('breakpoints'); ?>[]" 
相关问题