wordpressのPOST先が ページが存在しません になってしまう。
フォームを作っていて、何気なく要素名を決めて送信していたのだが
フォームから自分にPOSTをした際に何故か「ページが存在しません」となり、設定したコントローラにすら到達出来ていない。
言わばPOSTしたデータを確認しようとしてexitを設定してもその前段階の状態で404側に振られてしまっている。
<form name="contact" id="contact_form" method="post" enctype="multipart/form-data" action="<?php echo esc_url( home_url( '/contactform/' ) ); ?>"> <div> <label>名前</label><span>※</span><br /> <input type="text" name="name" size="40" maxlength="60" value="<?php echo ($name)?$name:"";?>" required /> </div> <div> <label>メールアドレス</label><span>※</span><br /> <input type="email" name="email" size="40" maxlength="200" value="<?php echo ($email)?$email:"";?>" required /> </div> <div> <label>メッセージ</label><span>※</span><br /> <textarea name="message" cols="40" rows="10" required><?php echo ($message)?$message:"";?></textarea> </div> <div> <input type="submit" value="送信する" /> </div> </form>
こんな感じ。
これで悩んでいた所以下のような情報をサイトで見つけた。
https://yaruzou.net/wp-form-post-get-404https://yaruzou.net/wp-form-post-get-404
どうやらWordPressには予約語が設定されていて、POSTするフォームの要素名に設定すると強制的に404に飛んでしまう。
CMSなので悪用しようと思えばいくらでも悪用出来てしまう事を見越して、要素名にオリジナル命名規則を造れって事なんだろうな。
今回の場合は要素名の name の所を contact_name に変更したら無事にPOST出来た。
まだまだナレッジと経験値が足りないので、何故?なんで?と言う動かないに対する対処が足りていない。勉強しよう。