Formulário de contato sem plugin

splash_page_template_chooser

Quer um formulário de contato fácil e rápido para o seu blog WordPress? Basta criar um template para fazer isso sem precisar de plugins.

Salve o código com qualquer nome, por exemplo contato.php, e envie para a pasta do seu tema. Depois basta criar a página onde quer o formulário e selecionar o template Contato na lateral da página.

Lembre de inserir as divs necessárias para que o código se adapte ao layout do seu site.

<?php
/*
Template Name: Contato
*/
?>

<?php
if(isset($_POST['submitted'])) {
if(trim($_POST['contactName']) === '') {
$nameError = 'Digite o seu nome.';
$hasError = true;
} else {
$name = trim($_POST['contactName']);
}

if(trim($_POST['email']) === '') {
$emailError = 'Digite o seu email.';
$hasError = true;
} else if (!preg_match("/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+.[a-z]{2,4}$/i", trim($_POST['email']))) {
$emailError = 'Digite um email válido.';
$hasError = true;
} else {
$email = trim($_POST['email']);
}

if(trim($_POST['comments']) === '') {
$commentError = 'Digite um comentário.';
$hasError = true;
} else {
if(function_exists('stripslashes')) {
$comments = stripslashes(trim($_POST['comments']));
} else {
$comments = trim($_POST['comments']);
}
}

if(!isset($hasError)) {
$emailTo = get_option('tz_email');
if (!isset($emailTo) || ($emailTo == '') ){
$emailTo = get_option('admin_email');
}
$subject = 'Mensagem de '.$name;
$body = "Nome: $name nnEmail: $email nComentário: $comments";
$headers = 'From: '.$name.' <'.$emailTo.'>' . "rn" . 'Reply-To: ' . $email;

wp_mail($emailTo, $subject, $body, $headers);
$emailSent = true;
}

} ?>
<?php get_header(); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h1 class="entry-title"><?php the_title(); ?></h1>
<?php if(isset($emailSent) && $emailSent == true) { ?>
<p>Email enviado com sucesso.</p>
<?php } else { ?>
<?php the_content(); ?>
<?php if(isset($hasError) || isset($captchaError)) { ?>
<p class="error">Ocorreu um erro.<p>
<?php } ?>
<form action="<?php the_permalink(); ?>" id="contactForm" method="post">
<label for="contactName">Nome:</label>
<input type="text" name="contactName" id="contactName" value="<?php if(isset($_POST['contactName'])) echo $_POST['contactName'];?>" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
<label for="email">Email</label>
<input type="text" name="email" id="email" value="<?php if(isset($_POST['email'])) echo $_POST['email'];?>" />
<?php if($emailError != '') { ?>
<span class="error"><?=$emailError;?></span>
<?php } ?>
<label for="commentsText">Mensagem:</label>
<textarea name="comments" id="commentsText" rows="20" cols="30"><?php if(isset($_POST['comments'])) { if(function_exists('stripslashes')) { echo stripslashes($_POST['comments']); } else { echo $_POST['comments']; } } ?></textarea>
<?php if($commentError != '') { ?>
<span class="error"><?=$commentError;?></span>
<?php } ?>
<input type="submit" value="Enviar mensagem">
<input type="hidden" name="submitted" id="submitted" value="true" />
</form>
<?php } ?>
<?php endwhile; endif; ?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

Dica vinda do Cats Who Code

7 comentários em “Formulário de contato sem plugin”

  1. Ola
    tem um problema aqui
    $headers = ‘From: ‘.$name.’ ‘ . “rn” . ‘Reply-To: ‘ . $email;

    quando vamos retornar o email fica tudo (todos os email’s) misturado no campo para

    Obrigado

    Responder
  2. Se alguém puder me ajudar tenho um contato em meu site no WordPress porém na hospedagem onde desenvolvo o contato funciona e entrega o e-mail mas na Locaweb que é a hospedagem do cliente não funciona já entrei em contato com eles muitas vezes e nada. Fico no aguardo

    Responder

Deixe um comentário