web-dev-qa-db-ja.com

URLは正しいのにWordpressでフォームを送信すると404ページが読み込まれる

単純な連絡フォームを作成しているだけですが、無効なページに投稿されているようです。ブラウザの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>
19
JM at Work

私は間違っているかもしれませんが、私は漠然と覚えています:名前、Eメールはコメントを投稿するためにWordPressによってハイジャックされます。

43
Tom

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

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

そして、どこかにCPT "movie"を登録したとき、あなたのフォーム送信は404エラーで終わります。

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

4
Marek

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

1
Thierry Edou

それは私にはうまくいきます

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

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

0