En Apariencia -> Menús enlazamos esa nueva página.
Desde el FTP hacemos una copia en el tema activo de la página page.php (si no existiera entonces single.php) y la llamamos por ejemplo t_page_contacto.php
Lo primero de todo cambiar la cabecera de ese fichero t_page_contacto.php (pues va a ser una plantilla personalizada):
<?php
/*
Template Name: Contactar sin plugin
*/
Borramos todo lo que haya entre las etiquetas <main> y </main> y metemos ahí:
<?php
if ( isset($_GET['sent']) ){
if ( $_GET['sent'] == '1'){
echo "<p>Formulario enviado correctamente</p><br>";
}
else {
echo "<p> Hubo un error al enviar</p><br>";
}
}
?>
<form method="post" action="<?php echo admin_url( 'admin-post.php' ) ?>" >
<label for="name">Nombre:</label>
<input type="text" name="name" id="name" required>
<br>
<label for="email">Correo:</label>
<input type="email" name="email" id="email" required>
<br>
<label for="message">Mensaje:</label>
<textarea name="message" id="message" cols="30" rows="10" required></textarea>
<br>
<input type="hidden" name="action" value="process_form">
<input type="submit" name="submit" value="Enviar">
</form>
En el Admin editamos la página de "Contacto" y le asociamos la nueva plantilla que le hemos creado.
En el functions.php del tema activo:
// Hooks admin-post
add_action( 'admin_post_nopriv_process_form', 'send_mail_data' );
add_action( 'admin_post_process_form', 'send_mail_data' );
// Funcion callback
function send_mail_data() {
$name = sanitize_text_field($_POST['name']);
$email = sanitize_email($_POST['email']);
$message = sanitize_textarea_field($_POST['message']);
$adminmail = "destino@dominio.com"; //email destino
$subject = 'Formulario de contacto'; //asunto
$headers = "Reply-to: " . $name . " <" . $email . ">";
//Cuerpo del mensaje
$msg = "Nombre: " . $name . "\n";
$msg .= "E-mail: " . $email . "\n\n";
$msg .= "Mensaje: \n\n" . $message . "\n";
$sendmail = wp_mail( $adminmail, $subject, $msg, $headers);
wp_redirect( home_url("/contacto/")."?sent=".$sendmail ); //asumiendo que existe esta url
}

No hay comentarios:
Publicar un comentario