Perdona, aquí pongo el código.
Al principio del
header tengo esta validación:
Código PHP:
// Validación contacto footer
global $errores;
global $respuestaErrores;
global $fallaEnvio;
if(isset($_POST['enviado'])) {
$errores = 0;
$campo_nombre = $_POST['footer_contacto_nombre'];
$campo_correo = $_POST['footer_contacto_correo'];
$campo_mensaje = $_POST['footer_contacto_mensaje'];
$respuestaErrores = '
<script>
$("#footer_contacto_nombre").val("'.$campo_nombre.'");
$("#footer_contacto_correo").val("'.$campo_correo.'");
$("#footer_contacto_mensaje").val("'.$campo_mensaje.'");';
if(trim($campo_nombre) == '') {
$errores ++;
$respuestaErrores.= '$("#nombre_req").css("display","inline");';
}
if(trim($campo_correo) == '') {
$errores ++;
$respuestaErrores.= '$("#correo_req").css("display","inline");';
}
else if(!preg_match("/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i", $campo_correo)) {
$errores ++;
$respuestaErrores.= '$("#correo_req").css("display","inline");';
}
if(trim($campo_mensaje) == '') {
$errores ++;
$respuestaErrores.= '$("#mensaje_req").css("display","inline");';
}
$respuestaErrores.= '
</script>';
if ( $errores == 0 ) {
require_once ABSPATH . WPINC . '/class-phpmailer.php';
require_once ABSPATH . WPINC . '/class-smtp.php';
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 465; // set the SMTP port : Gmail:465 y 587
$mail->Username = "mi correo"; // username
$mail->Password = "mi contraseña"; // password
$mail->From = $campo_correo;
$mail->FromName = "Enviado por: $campo_nombre";
$mail->Subject = "Contacto web";
$body = "<span style='color:#999'>De:</span> $campo_nombre <br /><span style='color:#999'>Correo electrónico:</span> $campo_correo <br /><br /><span style='color:#999'>Mensaje:</span><br /> $campo_mensaje";
$body = str_replace("\n", "<br />", $body);
$mail->Body = $body;
$mail->AltBody = "De: $campo_nombre\nCorreo electrónico: $campo_correo\n\nMensaje:\n$campo_mensaje";
$mail->WordWrap = 10; // set word wrap
$mail->MsgHTML($body);
$mail->AddReplyTo($campo_correo,$campo_nombre);
$mail->AddAddress("correo","destinatario");
$mail->IsHTML(true);
if(!$mail->Send()) {
$fallaEnvio = true;
}
else {
$urlGracias = home_url( '/gracias/' );
header("Location: $urlGracias");
exit;
}
}
}
En el
footer tengo este formulario:
Código HTML:
<form id="footer_contacto" name="footer_contacto" method="post" onsubmit="return valida(this);" action="#footer_contacto">
<fieldset>
<label class="assistive-text" for="footer_contacto_nombre">Nombre</label>
<p class="requerido" id="nombre_req">*</p>
<input id="footer_contacto_nombre" name="footer_contacto_nombre" type="text" placeholder="Nombre">
<label class="assistive-text" for="footer_contacto_correo">Correo electrónico</label>
<p class="requerido" id="correo_req">*</p>
<input id="footer_contacto_correo" name="footer_contacto_correo" type="text" placeholder="Correo electrónico">
<label class="assistive-text" for="footer_contacto_mensaje">Mensaje</label>
<p class="requerido" id="mensaje_req">*</p>
<textarea id="footer_contacto_mensaje" name="footer_contacto_mensaje" placeholder="Mensaje"></textarea>
<input type="hidden" name="enviado" id="enviado" value="true" />
<input type="submit" value="Enviar">
</fieldset>
</form>
Si estoy por ejemplo en localhost/index.php y intento mandar el formulario con un campo incompleto vuelve a cargar esa misma página pero con un ancla, es decir, carga: localhost/index.php#footer_contacto para que el navegador vaya a la forma de contacto y el usuario vea los campos que le faltaron llenar. Después de eso lleno correctamente los datos y al hacer submit me manda el correo y me manda a la página localhost/gracias/#footer_contacto cuando me debería llevar nada más a localhost/gracias/ (sin el #footer_contacto al final).
No sé si en el header(location:…) se le pueda decir que ignore el vínculo al ancla que supongo se queda memorizada desde la página anterior.