単純な連絡フォームを作成しているだけですが、無効なページに投稿されているようです。ブラウザのURLは正しいですが、ページのタイトルは「ページが見つかりません」です。
ページ上部に
$emailed = false;
if (isset($_POST['submit'])) {
wp_mail('[email protected]', $_POST['subject'], $_POST['content']);
$emailed = true;
}
hTMLの下に
<form action="<?php the_permalink(); ?>" method="post" id="contactform">
<div class="formelem">
<label for="name">Name</label>
<input type="text" name="name" class="required" />
</div>
<div class="formelem">
<label for="email">Email</label>
<input type="text" name="email" class="required email" />
</div>
<div class="formelem">
<label for="subject">Subject</label>
<input type="text" name="subject" class="required" />
</div>
<div class="formelem">
<label for="content">Content</label>
<textarea name="content" cols="30" rows="10" class="required"></textarea>
</div>
<input type="submit" value="Submit Message" name="submit" value="submit" />
</form>
私は間違っているかもしれませんが、私は漠然と覚えています:名前、Eメールはコメントを投稿するためにWordPressによってハイジャックされます。
トムが書いたように、それはname
またはemail
の問題だけではありません。カスタム投稿タイプの1つと同じname属性を持つ入力フィールドでも問題がありました。例えば:
...
<input type="text" name="movie">
...
そして、どこかにCPT "movie"を登録したとき、あなたのフォーム送信は404エラーで終わります。
結論:フォームの入力名属性値としてname
、email
およびany registered custom post type handle
を使用しないでください。
name="email"
をname="my_theme_email"
のように変更してみてください。フォームデータを送信するときにWordPressで予約されている名前のように、すべてのフィールドで同じようにします。私は同じ問題を抱えて、私はそれをそのように修正しました。
それは私にはうまくいきます
input type name, email, subject, and content to any name as names, emails, subjects, contents.
それが動作します。ありがとう。