ワードプレスでフォームを送信すると、URLが正しいのに404ページが読み込まれるのはなぜですか


23

単純な連絡先フォームを作成していますが、無効なページに投稿しているようです。ブラウザのURLは正しいが、ページのタイトルは「ページが見つかりません」です

ページの上部に

$emailed = false;
if (isset($_POST['submit'])) {
    wp_mail('example@example.com', $_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>

2
ページのURLは何ですか?
MikeSchinkel

WooCommerce Subscriptionsを使用し、「subscriptions」という名前の入力フィールドがある場合、同じ問題が発生します。何が起こっているのかを理解するのにかなり時間がかかり、この投稿のおかげでそれを修正することができました。WooCommerceサブスクリプションを使用していて、同様の問題を抱えている人がそれが役立つことを願っています!
むち打ち

回答:


49

私は間違っているかもしれませんが、コメントを投稿するために名前、メールがWordPressによってハイジャックされ、フォーム要素の名前をcontact-nameとcontact-emailに変更すると、同じ問題が発生しますか?


1
ええ、それは名前フィールドです。代わりにjm_nameのような名前空間です:)
Backie

トムに感謝!WPは確かにフォームをハイジャックしていました。それは奇妙です。
スヴェトスラフマリノフ

これは、AngularJSの場合にも当てはまります。;)
マーク

私はこの問題に直面しました、この答えは私を正しい道へと導きました。名前またはメールのフィールドはありませんでしたが、入力名の1つがカスタム投稿タイプ(cpt)に等しいため、wpクエリと404をトリガーしていました。したがって、フィールド名を変更してcptとは異なる名前にし、問題。
モーシン

4

それは何だけではありませんnameemailトムが書いたように、問題。カスタム投稿タイプの1つと同じ名前属性を持つ入力フィールドでも問題がありました。例えば:

...
<input type="text" name="movie">
...

そして、CPT「映画」を他の場所に登録した場合、フォームの送信は404エラーで終了します。

結論:nameemailおよびany registered custom post type handleフォームの入力名属性値として使用しないでください。


まあ、私は元の質問にもっと正確な情報で答えようとしました。ええ、おそらく... :-)少し編集を追加します。
マレック14年

1

name="email"ようなものに変更してみてくださいname="my_theme_email"。フォームデータを送信するときにWordPressで名前が予約されているように聞こえますが、すべてのフィールドで同じことをしてください。私は同じ問題を抱えて、そのように修正しました。


0

それは私に機能し、あなたの

input type name, email, subject, and content to any name as names, emails, subjects, contents.

それが動作します。ありがとう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.