sexta-feira, 1 de março de 2013

Formulário no WordPress sem plugin

Em determinadas situações é bom evitar o uso de plugins, no caso do formulário de contatoo não uso de plugin evita que ele fique carregando o script do formulário em todas as página, da forma mostrada abaixo 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 renomei-a para “contato.php” e abra a mesma em seu editor.
No topo dela vai ter o seguinte comentário.
1./**
2.* The template for displaying all pages.
3.* ...
4.*/

Mude para:
1./**
2.* The template name: Contato
3.* ...
4.*/

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.
01.?php
02.function h($str) {
03.return htmlentities($str);
04.}
05.
06.function noempty($str) {
07.if (preg_match('/[a-z]/'$str))
08.return true;
09.else
10.return false;
11.}
12.
13.if (isset($_POST['enviar'])) {
14.if (!noempty($_POST['nome']) or !noempty($_POST['assunto']) or !is_email($_POST['email'])or !noempty($_POST['msg'])) {
15.$_SESSION['info'] = 'Preencha todos campos corretamente.';
16.}
17.
18.else {
19.$headers 'From: ' $_POST['email'] . "\r\n" .
20.'Reply-To: ' $_POST['email']  . "\r\n" .
21.'X-Mailer: PHP/' . phpversion();
22.
23.if(@mail(get_bloginfo('admin_email'), $_POST['assunto'], $_POST['msg'], $headers)) {
24.$_SESSION['info'] = 'E-mail enviado com sucesso.';
25.header('Location: http://' $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);
26.exit;
27.else {
28.$_SESSION['info'] = 'Erro no servidor.';
29.}
30.}
31.}
32.?>
Agora o formulário, de preferencia abaixo da função “the_content()”.
01.<form method="post" action="" class="contato">
02.< ?php
03.if (isset($_SESSION['info'])) {
04.echo '<div>' $_SESSION['info'] . '';
05.unset($_SESSION['info']);
06.}
07.?>
08.<div>
09.<label for="nome">* Nome</label><br />
10.<input type="text" name="nome" value="<?php echo h(@$_POST['nome']) ?/>" id="nome"/>
11.</div>
12.<div>
13.<label for="email">* E-mail</label><br />
14.<input type="text" name="email" value="<?php echo h(@$_POST['email']) ?/>"id="email" />
15.</div>
16.<div>
17.<label for="assunto">* Assunto</label><br />
18.<input type="text" name="assunto" value="<?php echo h(@$_POST['assunto']) ?/>"id="assunto" />
19.</div>
20.<div>
21.<label for="msg">* Mensagem</label><br />
22.<textarea name="msg">< ?php echo h(@$_POST['msg']) ?></textarea>
23.</div>
24.<div>
25.<input type="submit" name="enviar" value="Enviar" />
26.</div>
27.</form>
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”. Este é só um exemplo você pode faze o formulário como desejar

Nenhum comentário:

Postar um comentário