【问题标题】:How can I save an array of checkboxes in a wordpress widget?如何在 wordpress 小部件中保存一组复选框?
【发布时间】:2015-02-24 10:45:46
【问题描述】:

我创建了一个小部件,我需要允许用户从一系列选项中进行选择。选项是来自数据库中另一个表的书籍。

我正在尝试使用这样的代码:

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

但是,尝试保存时会失败。甚至可以传递这样的选项数组并保存它们吗?如果不是,那将是一个替代解决方案。我可以传递这样的值:

book1
book2
book3

如果我这样做,我将不得不在更新方法中循环遍历数据库中的所有书籍,以确定哪些是检查的,哪些不是?我愿意接受建议。

【问题讨论】:

  • 我很困惑。您的问题是关于复选框,但您的 html 正在呈现一个文本框。我错过了什么吗?

标签: php wordpress checkbox widget


【解决方案1】:

我会这样做:

首先,存储选项并将它们选择为数组:

$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[]"); ?>">

【讨论】:

  • 这是我需要的。我将复选框的名称设置为 books[],然后在 wp_widget 类的 update 方法中使用了 update_option 函数。完美运行。我没有考虑将选项用作额外的存储机制。谢谢。
  • 谢谢,您的回答确实很有帮助,但我想提一下,在大多数情况下,implode(',', $_REQUEST['books']) 并保存是不够的它与插件的实例。在前端显示的小部件表单上,您可以展开(',', $instance['book']); - 因此并不总是需要将值保存到选项表中
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    相关资源
    最近更新 更多