Pular para o conteúdo principal

Como colocar um formulário de contato no wordpress sem o uso de plugin

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

Postagens mais visitadas deste blog

Removendo cache da memória no Linux

Para que o processador faça determinadas tarefas o mais rápido possível é gerado vários tipos de cache, um deles usa uma parte de memória RAM, só que as vezes este cache é um incomodo, para resolver isso geralmente os usuários reiniciam o computador, só que isto não é necessário. No windows existem programas que fazem a limpeza do cache da memória que podem ser encontrados facilmente em sites de downloads, no linux basta digita um comando. sysctl -w vm.drop_caches=3 E também tem está outra forma. echo 3 > /proc/sys/vm/drop_caches

Adaptando um cooler incompatível na placa de vídeo Radeon 9600SE

Isto a sua esquerda é um pedaço do dissipador do cooler Vga Evercool Mini Ufo que comprei uns dias atrás, ia fazer um ou dois meses que minha placa de vídeo estava sem cooler, com isso eu não podia fazer nada que exigisse muito processamento se não esquentava e travava o computador.

Forçando a finalização de todos aplicativos abertos ao desligar o Windows

As vezes quando vamos desligar o Windows e não temos tempo ou paciência para confirmar que realmente desejamos finalizar algum aplicativo o computador simplesmente não desliga e só percebemos quando voltamos, para acabar de vez com este problema podemos usar um comando do DOS e salva-lo em um arquivo .bat para facilitar o uso.