Por que quando eu envio um formulário no wordpress ele carrega uma página 404, embora o URL esteja correto

23

Estou apenas criando um formulário de contato simples, mas percebo que ele parece ser postado em uma página inválida. O URL no navegador está correto, mas o título da página é "Página não encontrada"

no topo da página

$emailed = false;
if (isset($_POST['submit'])) {
    wp_mail('[email protected]', $_POST['subject'], $_POST['content']);
    $emailed = true;
}

abaixo ... o 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>
JM no Trabalho
fonte
2
Qual URL sua página está localizada?
11559 MikeSchinkel
O mesmo problema aparece se você usar as Assinaturas do WooCommerce e tiver um campo de entrada chamado "assinaturas". Levei muito tempo para descobrir o que estava acontecendo e consegui corrigi-lo graças a este post. Espero que alguém que use as Assinaturas WooCommerce e tenha um problema semelhante ache isso útil!
Whiplash

Respostas:

49

Eu posso estar errado, mas me lembro vagamente disso: nome, e-mail são sequestrados pelo WordPress para postar comentários, se você renomeou os elementos do formulário para nome do contato e email do contato, você tem o mesmo problema?

Tom
fonte
1
Sim, é o campo de nome, namespace-lo como jm_name vez :)
Backie
Obrigado Tom! O WP estava de fato seqüestrando o formulário. Isso é estranho.
Svetoslav Marinov
Isso também se aplica ao AngularJS, caso isso ajude. ;)
Marcos
Eu enfrentei esse problema, essa resposta me direcionou para o caminho certo. Eu não tinha um campo com nome ou email, mas um de nome de entrada era igual ao tipo de postagem personalizada (cpt), portanto estava acionando a consulta wp e 404. Então, alterei o nome do campo para torná-lo diferente de cpt e corrigiu o questão.
Mohsin
4

Não é única name ou emailproblema, como Tom escreveu. Eu tive problema mesmo com o campo de entrada com o atributo name igual a um dos meus Tipos de postagem personalizados. Por exemplo:

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

E ao registrar o "filme" da CPT em outro lugar, o envio do seu formulário terminará com erro 404.

Conclusão: não use e name, como nome de entrada, valor do atributo em seus formulários.emailany registered custom post type handle

Marek
fonte
Bem, tentei responder à pergunta original com informações mais precisas. Ehm, provavelmente ... :-) Adicionando uma pequena edição.
Marek
1

Tente mudar name="email"para algo como name="my_theme_email", faça o mesmo com todo o seu campo, parece que algum nome está reservado no WordPress ao enviar dados do formulário. Eu tenho o mesmo problema e resolvi assim.

Thierry Edou
fonte
0

Funciona para mim, apenas mudei seu

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

Vai funcionar. Obrigado.

Y. Joy Ch. Singha
fonte