Ir ao conteúdo

Posts recomendados

Postado

Bom dia,

Tinha um formulario em um site e estou replicando em outro (inclusive de outra hospedagem, esse novo é da saninternet)

tenho a pagina do formulario, que acredito estar correto, e a pagina enviar que não consigo achar o erro, acredito que seja na linha 4, mas não sei como alterar

<?php
/*
Template Name: Orcamento
*/

get_header(); ?>

			<div class="row">
				<div class="col-sm-8">
 
					<div class="posting clearfix">
						<?php
							// Start the Loop.
							while ( have_posts() ) : the_post();

								/*
								 * Include the post format-specific template for the content. If you want to
								 * use this in a child theme, then include a file called called content-___.php
								 * (where ___ is the post format) and that will be used instead.
								 */
                        
                       
                        
								get_template_part( 'content', get_post_format() );
                        

								// Previous/next post navigation.
								//twentyfourteen_post_nav();

					
							endwhile;
						?>
                        
                        
                        
                        
                         <section class="post-main" role="main" id="content">                        
                            <article class="page type-page" role="article">
                               <!--o action é p o endereço onde o arquivo envia.php está. No caso, dentro do tema-->
                               
                                <div class="col-sm-6">
                                <br>
                                <form action="<?php bloginfo('template_url'); ?>/enviar.php" method="post">
                                    <label>Nome ( obrigat&oacute;rio )</label><br>
                                    <input name="nome" type="text" required="required" size="30">
                                    <br><br><label>E-mail ( obrigat&oacute;rio )</label><br>
                                    <input name="email" type="email" id="email" required="required" size="30">
                                    <br><br><label>Tipo de Evento</label><br>
                                    <select name="tipo" id="tipo">
                                                                <option value="Casamento" >Casamento</option>
                                                                <option value="Anivers&aacute;rio" >Anivers&aacute;rio</option>
                                                                <option value="Batizado" >Batizado</option>
                                                                <option value="Corporativo" >Corporativo</option>
                                                                <option value="Outros" >Outros</option>
                                                          </select>
                                    <br><br>
                                    <label>Quantidade de Pessoas</label><br>
                                    <input type="radio" name="valor" value="50" checked> 20 a 25
                                    <input type="radio" name="valor" value="100"> 51 a 150
                                    <input type="radio" name="valor" value="200"> 150 a 200
                                    
                                    </div>
                                    <div class="col-sm-6">
                                    <label>Data</label><br>
                                    <input name="data" type="date" size="20">
                                    <br><br>
                                    <label>Mensagem:</label>
                                    <br>
                                    <textarea name="mensagem" cols="30" rows="5" id="textarea"></textarea>
                                    <br><br>
                                    <input class="btn btn-primary" type="submit" name="Submit" value="Enviar">
                                    <input class="btn btn-primary" type="reset" name="limpar" value="Limpar">
                                </form><br><br>
                                </div>
                            </article>
                            
                            
                            <div class="post-attributes"></div>
                        </section>
                  
					</div>

				</div>
				<img src="imagens/pimenta.png" class="img-responsive visible-xs" />
				<div class="col-sm-4">
					<div class="contato clearfix">
						<?php dynamic_sidebar( 'sidebar1' ); ?>	
					</div>
				</div>
			</div>

 

segue abaixo o conteudo do enviar.php, inclusive estou testando com email do gmail atualmente, porque no site antigo o e-mail da empresa era gmail e funcionava

 

<?php
if(!isset($_POST[Submit])) die("N&atilde;o recebi nenhum par&acitc;metro. Por favor volte ao orcamento.html antes");
/* Medida preventiva para evitar que outros domínios sejam remetente da sua mensagem. */
if (eregi('tempsite.ws$|locaweb.com.br$|hospedagemdesites.ws$|websiteseguro.com$', $_SERVER[HTTP_HOST])) {
        $emailsender='[email protected]';
} else {
        $emailsender = "[email protected]";
        //    Na linha acima estamos forçando que o remetente seja 'webmaster@seudominio',
        // você pode alterar para que o remetente seja, por exemplo, 'contato@seudominio'.
}
 
/* Verifica qual é o sistema operacional do servidor para ajustar o cabeçalho de forma correta. Não alterar */
if(PHP_OS == "Linux") $quebra_linha = "\n"; //Se for Linux
elseif(PHP_OS == "WINNT") $quebra_linha = "\r\n"; // Se for Windows
else die("Este script nao esta preparado para funcionar com o sistema operacional de seu servidor");
 
// Passando os dados obtidos pelo formulário para as variáveis abaixo
$nome     = $_POST['nome'];
$email = trim($_POST['email']);
$tipo     = $_POST['tipo'];
$valor     = $_POST['valor'];
$data     = $_POST['data'];
$mensagem          = $_POST['mensagem'];
$titulo = "Orçamento Estação Marupiara";                  //titulo da mensagem enviada para o visitante
 
 
$html = "<b>Nome:</b> $nome <br />";
$html .= "<b>E-mail:</b> $email <br />";
$html .= "<b>Tipo de Evento:</b> $tipo <br />";
$html .= "<b>Quantidade de Pessoas:</b> $valor <br />";
$html .= "<b>Data:</b> $data <br />";
$html .= "<b>Mensagem:</b> $mensagem <br />";


/* Montando o cabeçalho da mensagem */
$headers = "MIME-Version: 1.1".$quebra_linha;
$headers .= "Content-type: text/html; charset=iso-8859-1".$quebra_linha;
// Perceba que a linha acima contém "text/html", sem essa linha, a mensagem não chegará formatada.
$headers .= "From: ".$emailsender.$quebra_linha;
$headers .= "Return-Path: " . $emailsender . $quebra_linha;
$headers .= "Reply-To: ".$email.$quebra_linha;
// Note que o e-mail do remetente será usado no campo Reply-To (Responder Para)
 
/* Enviando a mensagem */
mail($emailsender, $titulo, $html, $headers, "-r". $emailsender);

/* aqui você escreve a mensagem para o cliente */
$msg    = "$nome, mensagem para de 1 a 50 pessoas <br />
Prezado cliente <br />
Agradecemos pelo interesse em realizar seu evento conosco <br />
obrigada";
$nova    = "$nome, mensagem para de 51 a 100 pessoas";
$outra    = "$nome, mensagem para de 101 a 200 pessoas";


if ($valor == "50") {
    mail($email, $titulo, $msg, $headers, "-r". $emailsender);
} else {
    if ($valor == "100") {
    mail($email, $titulo, $nova, $headers, "-r". $emailsender);
} else {
    mail($email, $titulo, $outra, $headers, "-r". $emailsender);
    }
}


 
/* redirecionando para tela de agradecimento. Mudar para o url do cliente */
header('Location: http://estacaomarupiara.com.br/obrigado/');
exit;
?>

 

  • 2 semanas depois...
Postado

Olha isso não vai funcionar, e se isso funciona em algum site com o Wordpress significa que houve uma modificação dos arquivo de arquitetura do Wordpress.

 

O WordPress é baseado em uma arquitetura orientada a eventos. Isso significa internamente que o núcleo do WordPress é preenchido com várias ações e filtros para modificar a execução do programa ou para alterar o conteúdo durante o tempo de execução.

 

A requisição "POST" do formulário está tentando passar pela arquitetura do Wordpress e enviando a solicitação para o arquivo dentro do tema do Wordpress, e isso pode até funcionar porém, não recomendo e não é recorreto.

A requisição deve ser enviada para o arquivo "admin-post"

Esse arquivo vai manipular o pedido e enviar ele para uma ação pre-definida

 

Exemplo utilizando o método POST

Dentro do form você deve especificar o valor da action(ação)

<form action="<?php echo esc_url(admin_url('admin-post.php') ); ?>" method="post">
	<input type="hidden" name="action" value="enviar_email">
</form>

Exemplo utilizando o método GET

<a href="<?php echo esc_url(admin_url('admin-post.php') ); ?>?action=ação">Requisição utilizando o método GET</a>

 

Corrigindo o action do form e adicionando o action(ação pre-definida) você deve registra a ação pre-definida no arquivo de Functions do tema.

add_action('admin_post_{nome da ação pre-definida}', 'nome da função callback' ); // Caso seu sistema queira alterna a function callback, caso tenha um usuario logado.
add_action('admin_post_nopriv_{nome da ação pre-definida}', 'nome da função callback' ); // Caso não haja um usuario conectado

function nome da função callback() {
    status_header(200);
    var_dump($_POST);
    die();
}

Registrando a action(ação pre-definida) e definindo uma Callback Function, você pode trabalhar e manipular a requisição do Formulário na Callback function.

Dentro da Callback function você pode inserir o código de envio de email.

 

Você também pode usar algum plugin para facilitar o seu trabalho.

Você também pode usar o WordPress internal AJAX API.

 

Aqui tem um artigo falando sobre https://www.sitepoint.com/handling-post-requests-the-wordpress-way/

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!