Como colocar um formulário de contato no wordpress sem o uso de plugin
Autor: Neusa Rodrigues | Publicado: 2011-09-05T06:30:00-07:00


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.







/**

2.* The template for displaying all pages.

3.* ...

4.*/





Mude para:



view sourceprint?



1./**

2.* The template name: Contato

3.* ...

4.*/


Este “The template name: Contato” é a linha que vai fazer toda a diferença,&nbsp;com isso este template vai aparecer&nbsp;na lista de “modelos” de página para selecionar.&nbsp;Agora a única coisa que temos que fazer é um formulário de contato normal.&nbsp;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.
&lt; ?php

02.function&nbsp;h($str) {

03.return&nbsp;htmlentities($str);

04.}

05.&nbsp;

06.function&nbsp;noempty($str) {

07.if&nbsp;(preg_match('/[a-z]/',&nbsp;$str))

08.return&nbsp;true;

09.else

10.return&nbsp;false;

11.}

12.&nbsp;

13.if&nbsp;(isset($_POST['enviar'])) {

14.if&nbsp;(!noempty($_POST['nome'])&nbsp;or&nbsp;!noempty($_POST['assunto'])&nbsp;or!is_email($_POST['email'])&nbsp;or&nbsp;!noempty($_POST['msg'])) {

15.$_SESSION['info'] =&nbsp;'Preencha todos campos corretamente.';

16.}

17.&nbsp;

18.else&nbsp;{

19.$headers&nbsp;=&nbsp;'From: '&nbsp;.&nbsp;$_POST['email'] .&nbsp;"\r\n"&nbsp;.

20.'Reply-To: '&nbsp;.&nbsp;$_POST['email']&nbsp; .&nbsp;"\r\n"&nbsp;.

21.'X-Mailer: PHP/'&nbsp;. phpversion();

22.&nbsp;

23.if(@mail(get_bloginfo('admin_email'),&nbsp;$_POST['assunto'],&nbsp;$_POST['msg'],$headers)) {

24.$_SESSION['info'] =&nbsp;'E-mail enviado com sucesso.';

25.header('Location:&nbsp;http://'&nbsp;.&nbsp;$_SERVER['SERVER_NAME'] .$_SERVER['REQUEST_URI']);

26.exit;

27.}&nbsp;else&nbsp;{

28.$_SESSION['info'] =&nbsp;'Erro no servidor.';

29.}

30.}

31.}

32.?&gt;
Agora o formulário, de preferencia abaixo da função “the_content()”.



view sourceprint?



01.&lt;form method="post"&nbsp;action=""&nbsp;class="contato"&gt;

02.&lt; ?php

03.if&nbsp;(isset($_SESSION['info'])) {

04.echo&nbsp;'&lt;div class="info"&gt;'&nbsp;.&nbsp;$_SESSION['info'] .&nbsp;'';

05.unset($_SESSION['info']);

06.}

07.?&gt;

08.&lt;div&gt;

09.&lt;label&nbsp;for="nome"&gt;* Nome&lt;/label&gt;&lt;br /&gt;

10.&lt;input type="text"&nbsp;name="nome"&nbsp;value="&lt;?php echo h(@$_POST['nome']) ?/&gt;"&nbsp;id="nome"&nbsp;/&gt;

11.&lt;/div&gt;

12.&lt;div&gt;

13.&lt;label&nbsp;for="email"&gt;* E-mail&lt;/label&gt;&lt;br /&gt;

14.&lt;input type="text"&nbsp;name="email"&nbsp;value="&lt;?php echo h(@$_POST['email']) ?/&gt;"&nbsp;id="email"&nbsp;/&gt;

15.&lt;/div&gt;

16.&lt;div&gt;

17.&lt;label&nbsp;for="assunto"&gt;* Assunto&lt;/label&gt;&lt;br /&gt;

18.&lt;input type="text"&nbsp;name="assunto"&nbsp;value="&lt;?php echo h(@$_POST['assunto']) ?/&gt;"&nbsp;id="assunto"&nbsp;/&gt;

19.&lt;/div&gt;

20.&lt;div&gt;

21.&lt;label&nbsp;for="msg"&gt;* Mensagem&lt;/label&gt;&lt;br /&gt;

22.&lt;textarea name="msg"&gt;&lt; ?php&nbsp;echo&nbsp;h(@$_POST['msg']) ?&gt;&lt;/textarea&gt;

23.&lt;/div&gt;

24.&lt;div&gt;

25.&lt;input type="submit"&nbsp;name="enviar"&nbsp;value="Enviar"&nbsp;/&gt;

26.&lt;/div&gt;

27.&lt;/form&gt;



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.

[update]:&nbsp;Formulário de contato melhorado.

&nbsp;referência:&nbsp;&nbsp;&nbsp;http://www.pinceladasdaweb.com.br/blog/2010/10/15/como-colocar-um-formulario-de-contato-no-wordpress-sem-o-uso-de-plugin/