在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;表格名称?
答案 0 :(得分:1)
当我更改字段的名称,特别是数组的“基数”时,就出现了解决方案。
在我提供的示例中,它是data
,然后有几个元素。在这种情况下,data
碰巧也是我在插件中使用WordPress注册的自定义帖子类型。我不确切地知道发生了什么或者为什么,但是在某个地方它将我的数组与应该被查询的内容混在一起,很可能是因为名称冲突。
问题解决了!