やるしかなっちゃん

やるしかない!

[WordPress] Wordpressでformを作成した時のname属性に果てしなくハマった

こんな時代だからformを作ることはよくあると思う
そうなれば↓のようなformができあがる

<form method="post">
  <input name="name" type="text">
  <input type="submit" value="送信">
</form>

この時PHPならばPOST処理として以下のようなコードを書くだろう

$name = $_POST['name'];
// $nameを使ってほげほげ

説明は不要だと思うがinputタグのname属性が"name"のものから値を取得しているだけだ

だが、WordPressだと上のコードは動かない 絶対に動かない
今日これにハマりまくったので断言できる

原因はなにかいうとこれだ

// wp-includes/class-wp.php
// ソースコードの一番最初の方にある
public $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type', 'embed' );

そう、WordPressのコアのソースコードに既にnameが取られてしまっている
これにより正しく動作しなかったのだ
なのでWordPressでformを作るときはこれに要注意だ!!!