A interação dos visitantes com o conteúdo e autores de um blog, é item indispensável da lista de funcionalidades presentes em um projeto de qualquer profissional que deseja gerenciar seu próprio projeto. A abertura do espaço de comentários a cada artigo publicado é um excelente exemplo da relação entre visitante e administrador que o WordPress oferece de modo genuíno, com a funcionalidade incorporada a ferramenta por padrão.

Outra maneira de receber um melhor feedback do público é a utilização de um formulário de contato. Nesse diferente modelo de comunicação, as informações não são levadas ao público tornando a comunicação mais pessoal e privativa. Essa solução é ideal para conseguir contatos profissionais, propostas e outros assuntos que são tratados com maior cuidado e sigilo, por assim dizer.

Abaixo serão apresentadas algumas técnicas para realização de um formulário de contato próprio para seu site WordPress.

LINK DE EMAIL

Uma simples e rápida alternativa a ser aplicada é o uso de links de contatos. Esses links são ligações comuns que irão chamar o software padrão para envio e recebimento de emails do usuário:

<a href="mailto:contato@dominio.com" title="Fale Conosco">Fale Conosco</a>

Além de informar o email para o qual a mensagem será destinada, através do ‘mailto’ é possível identificar também:

  • Múltiplos endereços – Deve-se usar vírgulas separando cada endereço
  • Assunto da mensagem – Informar o parâmetro ‘subject’
  • Envio de cópias – Com a utilização do parâmetro ‘cc’
  • Envio de cópias ocultas – Parâmetro ‘bcc’
  • Texto padrão no corpo da mensagem – Identificado através do parâmetro ‘body’

Como exemplo, um link com todos os parâmetros passados ficaria da seguinte forma:

<a href="mailto:contato@dominio.com,teste@dominio.com?cc=email@dominio.com&bcc=webmaster@dominio.com&subject=Fale Conosco&body=Enviando email através do link de contato" title="Fale Conosco">Fale Conosco</a>

Essa prática pode não ser a melhor escolha para um projeto, dado que nem todos usuários se utilizam de um software para trabalhar com seus emails. Nesses casos o melhor a se fazer é proporcionar ao visitante uma página contendo um formulário de contato.

CONTACT FORM

São muitos os plugins disponíveis que permitem a criação de formulários no WordPress, porém poucos são tão eficientes quanto o Contact Form 7. Através dele é possível criar inúmeros formulários especificando os campos que cada um possuirá. Todos os formatos de campos são aceitos incluindo campos que se encarregarão de enviar arquivos anexos ao email informado nas configurações do formulário.

O uso do Contact Form é intuitivo, bastanta ao usuário criar os campos, o conteúdo do email que será enviado e informar para qual endereços aquele formulário deverá enviar as informações. Realizadas as configurações, a inserção do formulário em uma página ou post do blog se dá através do shortcode que a página administrativa do plugin informará, algo como:

[ contact-form 1 "Nome do formulário" ]

No entanto a utilização do plugin, mesmo que eficiente contento validação de campos e outros recursos mais, pode não corresponder as suas necessidades, seja pela ocupação do espaço em disco e banco de dados ou até mesmo por falta de familiariedade com o recurso. Em uma solução mais simplificada é possível criar seu próprio formulário sem o uso de plugins.

FORMULÁRIO DE CONTATO PRÓPRIO

Para criação de um formulário de contato personalizado será feito o uso dos Modelos de páginas do WordPress. O modelo de página de nome ‘Contato’ será criado através do arquivo ‘page-contact.php’ localizado na pasta do tema possuindo as seguintes instruções:

<?php
/* Template Name: Contato */
get_header(); ?>

				<div id="content">
					<?php
					if ( have_posts() ) :
						the_post();
						the_content(); ?>

					<form method="post" id="contact" action="">
						<fieldset>
							<legend>Formulário de contato</legend>
							<ul>
								<li>
									<label for="txt_nome">Nome</label>
									<input type="text" id="txt_nome" name="txt_nome" />
								</li>
								<li>
									<label for="txt_email">Email</label>
									<input type="text" id="txt_email" name="txt_email" />
								</li>
								<li>
									<label for="txt_msg">Descrição</label>
									<textarea name="txt_msg" id="txt_msg" rows="10" cols="50"></textarea>
								</li>
								<li>
									<input type="submit" class="submit" name="enviar-email" value="Enviar" />
								</li>
							</ul>
						</fieldset>
					</form>

					<?php endif; ?>

				</div><!-- #content -->

<?php get_sidebar(); get_footer(); ?>

Conforme especificado na tag form, o envio do formulário será para a mesma página que está sendo exibida. Desse modo a verificação do envio das informações será feita no cabeçalho do mesmo arquivo; caso o formulário tenha sido submetido será chamado o arquivo ‘contact.php’ localizado em uma nova pasta chamada ‘contact’ dentro da pasta do tema:

<?php
/* Template Name: Contato */
if ( $_POST[ 'enviar-email' ] )
	require TEMPLATEPATH . "/contact/contact.php";

get_header(); ?>

A criação da pasta ‘contact’ será em razão de uma melhor organização dos arquivos. Dentro da referida pasta será criado o arquivo ‘contact.php’ responsável por receber as informações, embutí-las em uma mensagem que será enviada por email ao administrador do blog:

<?php
$msg = '';
$status = 'err';

$nome = trim( $_POST[ 'txt_nome' ] );
$email = trim( $_POST[ 'txt_email' ] );
$texto = trim( $_POST[ 'txt_msg' ] );

if ( ( $nome == '' ) ||
	 ( $email == '' ) ||
	 ( $texto == '' ) ) {
	$msg = 'Preencha todos os campos!';

} else {

	$destinatario = 'contato@dominio.com';
	$assunto = 'Formulário de Contato';

	$data_hora = date( 'd-m-Y | H:i:s' );
	$mensagem = file_get_contents( TEMPLATEPATH . '/contact/contact.htm' );
	$mensagem = str_replace( '[nome]', $nome, $mensagem );
	$mensagem = str_replace( '[email]', $email, $mensagem );
	$mensagem = str_replace( '[data_hora]', $data_hora, $mensagem );
	$mensagem = str_replace( '[mensagem]', nl2br( $texto ), $mensagem );

	$cabecalhos = array( 'From: '.$email, 'Subject: '.$assunto, 'Return-Path: '.$email, 'MIME-Version: 1.0', 'X-Priority: 3', 'Content-Type: text/html' );
	$cabecalhos = implode( '\r\n', $cabecalhos );

	if ( !@mail( $destinatario, $assunto, $mensagem, $cabecalhos ) ) {
		$msg = 'A mensagem não pôde ser enviada...';
	} else {
		$status = 'ok';
		$msg = 'Mensagem enviada com sucesso!';
	}
}
?>

O referido arquivo irá obter a formatação do email de um arquivo HTML externo de nome ‘contact.html’; esse por sua vez deverá possuir os campos para posterior substituição com a informação enviada pelo visitante do blog. Veja o exemplo de uso:

<h1>Formulário de contato</h1>

<table>
	<p><strong>Data de envio</strong>: [data_hora]</p>
	<p><strong>Nome</strong>: [nome]</p>
	<p><strong>Email</strong>: [mail]</p>
	<p><strong>Mensagem</strong>:<br />[mensagem]</p>
</table>

De volta ao arquivo do modelo de página, um aviso será impresso em tela para o visitante indicando se as informações foram ou não corretamente enviadas inserindo o seguinte código:

<?php
// Em continuação ao arquivo...
the_post();

if ( $msg )
	echo '<h3 class="'.$status.'">'.$msg.'</h3>';

the_content(); ?>

Abraços

Autor: Mazetto

Blog do Autor | Artigos do Autor:

Desenvolvedor web especializado em WordPress. Trabalha como freelancer de diversas agências do Brasil na criação de plugins, templates e consultoria à ferramenta.

Templates Wordpress que Recomendamos:

  • U-Design WordPress Theme
  • Tersus - Responsive WordPress Theme
  • Modernize - Flexibility of Wordpress
  • Good Space - Responsive Minimal WP Theme
  • Sterling - Responsive Wordpress Theme
  • Karma - Clean and Modern Wordpress Theme
  • Doover Premium WordPress Theme
  • MayaShop - A Flexible Responsive e-Commerce Theme
  • SmartStart WP - Responsive HTML5 Theme
  • Striking Premium Corporate & Portfolio WP Theme
  • Core Minimalist Photography Portfolio
  • King Size - fullscreen background WordPress theme

Gostou deste artigo? Então torne-se fã do Blog no Facebook!


JobRoller - Premium Job Board Theme

Comentários dos Alunos


  1. RubyArt
    10.05.2011

    Foda pra quem usa Locaweb e tenta usar contact form 7, é que os e-mails não chegam mais, não sei se é só comigo, mais eu fui no suporte deles e falaram que eles mudaram os padrões, dae tenho que fazer toda vez um hahaha (claro que já deixo semi-pronto) mais é osso

    vou testar isso ae :D

    Responder


    • Verdade RubyArt. O meu site também não funciona mais o contact form7. Recebi em 8 de abril um e-mail da Locaweb falando que eles estavam mudando os padrões para melhorias evitando a prática de spams. Vendo agora o seu comentário fui testar o meu site e vi que não funciona. Vou ver com a Locaweb para arrumar isso.

      Responder


    • Gisele
      20.07.2011

      Para o contact form 7 funcionar no locaweb:
      Edite o arquivo: wp-includes/class-phpmailer.php
      Configure o campo “RETURN-PATH” (linha 88 ou próximo):

      var $Sender= ‘SEU_EMAIL@SEU_DOMINIO_LOCAWEB’;

      Altere (na linha 478 ou linha próxima):

      $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $body, $header, “-r”. $params);

      Nas configurações do Form7 utilize um e-mail válido da hospedagem.

      Responder


  2. johnatan
    10.05.2011

    a função mail() está em desuso em muitos servidores devidos as má práticas, então seria a mesma lógica aplicar a Classe PHPMailer?

    Responder


    • Mazetto
      11.05.2011

      Boa observação Johnatan. O uso da função mail são mesmo para situações simples e, assim como você disse; devido ao seu uso incorreto, alguns servidores bloqueiam o envio e/ou recebimento das mensagens enviadas por ela.
      No caso dessa parte do artigo, a proposta é demonstrar como criar uma página de contatos própria com base nos modelos de páginas. Certamente no lado do servidor o uso de classes e outras funções como a wp_mail própria do WordPress pode ser implamentada tranquilamente.
      Da mesma forma, a validação dos dados também pode ser aprimorada se necessário, bastando alguns pequenos ajustes no contact/contact.php proposto no exemplo. Abraços.

      Responder


  3. Paulo
    12.05.2011

    Boa noite Mazetto,

    Tenho uma dúvida: Como é que coloco o formulário visível no site? Por exemplo numa página estática. Não sei chamar templates nas páginas criadas no WordPress.

    Responder


    • Mazetto
      13.05.2011

      Olá Paulo, basta colocar o código (por exemplo esse mostrado acima em ‘Formulário de contato próprio’) no arquivo que desejerá exibí-lo. Escolha o modelo de página na guia ‘Atributos de página’ enquanto edita sua página. Caso o formulário não esteja aparecendo mesmo após a escolha do modelo correto, o problema estará em seu CSS.

      Responder


      • Paulo
        13.05.2011

        Muito obrigado! Já entendi o funcionamento.
        Continuem com o vosso excelente trabalho.

        Responder


  4. lucas
    13.05.2011

    oi mazetto

    sabe se existe algum plugin que eu possa fazer o usuario se cadastrar no site com uma conta exemplo@dominio.com e ao fazer login dessa conta ele seja direcionado a um profile editavel

    aguardo resposta

    Responder


    • Mazetto
      17.05.2011

      Olá Lucas, ao permitir o cadastro pelo WordPress, assim que o usuário logar ele será redirecionado a página inicial do painel e terá habilitada a página ‘Perfil’ onde poderá editar seus dados. Abraço.

      Responder


  5. Rui Coelho
    22.05.2011

    Boas,

    Estou a desenvolver um theme WordPress e tenho uma dúvida.

    É possível eu fazer algo deste género:

    $destinatario = ‘get_bloginfo(‘admin_email’);’;
    $assunto = ‘Formulário de Contato’;

    Desta forma os clientes não teriam de editar o código do formulário. Será possível ajudar-me?

    Cumprimentos,
    Rui Coelho

    Responder


  6. Nara Borges
    02.06.2011

    Oi amigo, estou migrando do Blogspot para o WP, um novo mundo e tudo novo para mim, lendo essa sua matéria consegui colocar o formulário para contato no blog, mas não consegui direcionar os e-mails que me mandam para o meu e-mail, você pode me ajudar?

    Grata.

    Responder


    • Mazetto
      16.06.2011

      Olá Nara, se for redirecionar através da programação que passei altere $destinatario = ‘contato@dominio.com’; para seu email. Até mais.

      Responder


  7. Gostaria de agradecer ao Mazetto por este artigo, que foi de excelente aprendizado para mim, pois seguindo o modelo acima, fui capaz de concluir o meu próprio formulário de contato via WordPress, pegando já o modelo que eu tinha em meu site e configurando com os dados do modelo acima.

    Muito obrigado mais uma vez por este super artigo!

    Grande abraço!

    Responder


  8. Barbara
    26.08.2011

    Ola Mazetto

    Amigo, uma pergunta tem alguma informação sobre o WP Comment Auto Responder? Eu andei a procurar aqui no site mas não encontrei. Na altura em que eu o instalei o plugin quando fui para testar, o mesmo não funcionou e nem sei porque.

    Poderia-me ajudar por favor? Ou a dar uma dica.

    Obrigado

    Responder


  9. Nick
    25.10.2011

    Obrigado ótimo tutorial me ajudo muito com um cliente

    Responder

Comente o Artigo!

RSS
Twitter
Facebook
Comentários
ASSINANTES
SEGUIDORES
FÃS
COMENTÁRIOS
11485

Subscrever Newsletter
Subscreva a Newsletter:


Elegant Themes

Wix

Theme Forest

Mojo Themes



Assine a Escola Wordpress Assine a Newsletter da Escola Wordpress Escola Wordpress no Twitter Escola Wordpress no Facebook Escola Wordpress no Youtube Escola Wordpress no Google Buzz