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()
関数が配列で使用できないということです。
オブジェクトの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 以外では一般的な慣行のように思えますが、WP 内では不可能ですか? フォーム名に代わる「ベストプラクティス」があるのではないでしょうか?