コトの発端
とある記事にて、WordPressのショートコードを使用して、PHPへフォームデータをPOSTするプログラムを開発していた。
こんなの
記事のフォームから同じ記事へデータをPOSTしたところ、URLは同じはずなのに404 PageNotFound ページが見つかりませんの表示になってしまった。
なぜだ。。。
解決編
POSTするときの名前に制約があるらしい。下記サイト参照。
WordPressでGETやPOSTを使ったら404エラーが出る
https://yaruzou.net/wp-form-post-get-404
このときに開発したフォームのHTMLは下記の通り。
<form method="post">
テキスト:<input type="text" name="name">
<input type="submit" value="送信">
</form>
このフォームだとテキストデータにnameという名前をつけて送信しているが、そのnameがワードプレスも使用している名前(予約語)であったため、今回のエラーが発生したことが判明した。
ポストする名前をTESTDATAに変更したところ、正常に動作するようになったことを確認した。
正常に動作するフォームのHTML
<form method="post">
テキスト:<input type="text" name="TESTDATA">
<input type="submit" value="送信">
</form>
まとめ
WordPressの記事や固定ページにフォームからデータをPOSTするときは、WordPressのシステムが使用している名前(予約語)を使用しないようにデータの名前を設定しなければならない。
参考にさせていただいたページ
WordPressでGETやPOSTを使ったら404エラーが出る
https://yaruzou.net/wp-form-post-get-404
いつもの
記事の正確性については無保証です。