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('example@example.com', $_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>

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?


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


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.