WordPress以外で動作していた簡単なフォームを含むページをWordPress内に移植する作業を行った際にフォームからsubmitすると何故か404エラーになってしまう現象に地味にハマってしまいましたので繰り返さないよう原因などメモとして残します。
フォームのソース抜粋
実際に作業したフォームとは異なりますが、以下のような単純なフォームですが一発でWordPress上で動かすことが出来ませんでした。
<form method="post">
名前
<input type="text" name="name" value="">
生年月日
<input type="text" name="year" value="">
<input type="text" name="month" value="">
<input type="text" name="day" value="">
<input type="submit">
</form>
原因
404エラーになってしまう原因にたどり着くまでに地味に時間がかかってしまったのですが、分かってしまえば単純でWordPressで決められた予約語をフォームのname属性で使ってしまっていたことが原因でした。
methodを “POST” にするか “GET” にするかで 404エラーになるものならないものがありますが、予約語は基本的に避けた方がいいため事前に予約語を確認するかプレフィックスを付けるなどすると安全です。
予約語
WordPressのリファレンス内に予約語のみのページはないようですが、「関数リファレンス/register taxonomy」のページ内に一覧の記載がありますので、ご確認ください。
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/register_taxonomy#.E4.BA.88.E7.B4.84.E8.AA.9E
動作環境情報
エックスサーバー(x10) PHP 7.3.16 MySQL 5.7 WordPress 5.5.1
コメント