小部件:HTML2维数组不起作用

时间:2013-11-28 作者:lilobase

今天我的WordPress出现了一些奇怪的问题:

我想在一个小部件中存储相同的多个值,所以我创建了如下内容:myCollection[id][myField] 作为我的管理小部件表单的输入名称。

a之后$this->get_field_name 调用和模板集成,生成以下代码:

<label for="widget-pricetable-ibsciss-widget-2-widget-pricetable-ibscisswidget[2][box[1][price]]"> … </label>
<input id="widget-pricetable-ibsciss-widget-2-widget-pricetable-ibsciss-widget[2][box[1][price]]" value="" name="widget-pricetable-ibsciss-widget[2][box[1][price]]"></input>
提交后,我从WordPress获得此实例数组:

array(4) { [
  "title"]=> string(12) "Global title" 
  ["box[0"]=> array(2) { 
    ["title"]=> string(6) "title1" 
    ["price"]=> string(6) "price1" 
  } 
  ["box[1"]=> array(2) { 
    ["title"]=> string(6) "title2" 
    ["price"]=> string(6) "price2" 
  } 
  ["box_title"]=> string(9) "Box title" 
}

我有一个奇怪的“box[0”键,而不是一个格式良好的数组。

1 个回复
最合适的回答,由SO网友:lilobase 整理而成

好了,通过快速的恶意破解,我实现了我的目标:

而不是myCollection[id][myField] 我给get_field_name\'s函数如下:collection][id][field.

因此生成的代码变成:

name="widget-pricetable-ibsciss-widget[2][box][1][title]"

我的阵列现在看起来很完美:

array(3) { 
  ["title"]=> string(12) "Global title" 
  ["box"]=> array(2) { 
    [0]=> array(2) { 
      ["title"]=> string(6) "title1" 
      ["price"]=> string(6) "price1" 
    } 
    [1]=> array(2) { 
      ["title"]=> string(6) "title2" 
      ["price"]=> string(6) "price2" 
    } 
  } 
  ["box_title"]=> string(9) "Box title" 
} 
PS:仅供参考,这是Wordpress的get\\u field\\u name方法:

function get_field_name($field_name) {
    return \'widget-\' . $this->id_base . \'[\' . $this->number . \'][\' . $field_name . \']\';
}

结束

相关推荐

打开HTML标记前绘制的仪表板构件

我正在制作我的第一个仪表板小部件,它正在成功显示,但下面函数的输出HTML显示在仪表板页面上打开HTML标记之前。涉及的代码如下。在add\\u action()调用之前是否需要一些init调用?function example_add_dashboard_widgets() { wp_add_dashboard_widget( \'donationsmtcarmel\', // Widget slug.