无法在Wordpress中使用数组作为表单名称

时间:2013-09-13 22:36:59

标签: php wordpress forms

在PHP世界中,在HTML表单中沿着这些行做某些事情是完全正常和正常的:

<input type="text" name="data[name][first]" />
<input type="text" name="data[name][last]" />
<input type="text" name="data[address][street]" />
<input type="text" name="data[address][city]" />

然后,在您的$_POST变量中,您将获得与此类似的数组:

data = array (
  'name' => array (
    'first' => value,
    'last' => value
  ),
  'address' => array (
    'street' => value,
    'city' => value
  )

然后,您可以使用var中的这些名称来访问它们,即$firstName = $_POST['data']['name']['first'];

我的问题是,这在Wordpress中根本不起作用。我得到的错误是trim()函数不能在数组上使用。

我跟踪过&#34;为什么&#34;它确实适用于parse_query对象的WP_Query函数中的以下代码段:

$qv['p'] =  absint($qv['p']);
        $qv['page_id'] =  absint($qv['page_id']);
        $qv['year'] = absint($qv['year']);
        $qv['monthnum'] = absint($qv['monthnum']);
        $qv['day'] = absint($qv['day']);
        $qv['w'] = absint($qv['w']);
        $qv['m'] = absint($qv['m']);
        $qv['paged'] = absint($qv['paged']);
        $qv['cat'] = preg_replace( '|[^0-9,-]|', '', $qv['cat'] ); // comma separated list of positive or negative integers
        $qv['pagename'] = trim( $qv['pagename'] );
        $qv['name'] = trim( $qv['name'] ); /* Throws trim() error on array! */
        if ( '' !== $qv['hour'] ) $qv['hour'] = absint($qv['hour']);
        if ( '' !== $qv['minute'] ) $qv['minute'] = absint($qv['minute']);
        if ( '' !== $qv['second'] ) $qv['second'] = absint($qv['second']);
        if ( '' !== $qv['menu_order'] ) $qv['menu_order'] = absint($qv['menu_order']);

有人能想到一种方法来正确使用WordPress中字段名称的数组吗?看起来像WP之外的这种常见做法,但却不可能吗?也许有替代的最佳实践&#39;表格名称?

1 个答案:

答案 0 :(得分:1)

当我更改字段的名称,特别是数组的“基数”时,就出现了解决方案。

在我提供的示例中,它是data,然后有几个元素。在这种情况下,data碰巧也是我在插件中使用WordPress注册的自定义帖子类型。我不确切地知道发生了什么或者为什么,但是在某个地方它将我的数组与应该被查询的内容混在一起,很可能是因为名称冲突。

问题解决了!