Nada contra plugins, são muito bons, mas em determinadas situação é bom evitar, na minha opinião formulário de contato é uma delas, pois evita de ficar carregando o script do formulário em todas as página, desta forma que vou mostrar o script só carrega na própria página de contato. E para isso acontecer vamos criar um template especifico para página de contato.
Todos templates do wordpress tem o arquivo "page.php", ele é o arquivo responsável em exibir todas páginas separadas, sabendo disto vamos fazer o seguinte: Entre na pasta do template, faça uma copia do "page.php" e romei-a para "contato.php" e abra a mesma em seu editor.
No topo dela vai ter o seguinte comentário.
/**
* The template for displaying all pages.
* ...
*/
Mude para:
/**
* The template name: Contato
* ...
*/
Este "The template name: Contato" é a linha que vai fazer toda a diferença, com isso este template vai aparecer na lista de "modelos" de página para selecionar.
Agora a única coisa que temos que fazer é um formulário de contato normal.
Copei este código logo após do comentário do topo, repare que uso a função "get_bloginfo()" para pegar o e-mail do admin.
function h($str) {
return htmlentities($str);
}
function noempty($str) {
if (preg_match('/[a-z]/', $str))
return true;
else
return false;
}
if (isset($_POST['enviar'])) {
if (!noempty($_POST['nome']) or !noempty($_POST['assunto']) or !is_email($_POST['email']) or !noempty($_POST['msg'])) {
$_SESSION['info'] = 'Preencha todos campos corretamente.';
}
else {
$headers = 'From: ' . $_POST['email'] . "\r\n" .
'Reply-To: ' . $_POST['email'] . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(@mail(get_bloginfo('admin_email'), $_POST['assunto'], $_POST['msg'], $headers)) {
$_SESSION['info'] = 'E-mail enviado com sucesso.';
header('Location: http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);
exit;
} else {
$_SESSION['info'] = 'Erro no servidor.';
}
}
}
Agora o formulário, de preferencia abaixo da função "the_content()".
<form method="post" action="" class="contato">
<?php
if (isset($_SESSION['info'])) {
echo '<div class="info">' . $_SESSION['info'] . '</div>';
unset($_SESSION['info']);
}
?>
<div>
<label for="nome">* Nome</label>
<input type="text" name="nome" value="<?php echo isset($_POST['nome']) ? h($_POST['nome']) : null ?>" id="nome" />
</div>
<div>
<label for="email">* E-mail</label>
<input type="text" name="email" value="<?php echo isset($_POST['email']) ? h($_POST['email']) : null ?>" id="email" />
</div>
<div>
<label for="assunto">* Assunto</label>
<input type="text" name="assunto" value="<?php echo isset($_POST['assunto']) ? h($_POST['assunto']) : null ?>" id="assunto" />
</div>
<div>
<label for="msg">* Mensagem</label>
<textarea name="msg"><?php echo isset($_POST['msg']) ? h($_POST['msg']) : null ?></textarea>
</div>
<div>
<input type="submit" name="enviar" value="Enviar" />
</div>
</form>
Um pouco de CSS para deixar mais bacaninha.
form.contato label {
display:block;
}
E está pronto, é só editar ou criar a página de contato e na hora de salvar selecionar o modelo "contato" nas opções "Atributos de Página". Esse é só um exemplo, você pode faze o formulário como desejar.
Comentários
Postar um comentário