El uso de plugins como ninjaform, Forminator pueden ser útiles aunque muy pesados y en algunas ocasiones no nos pueden servir. En mi caso personal viví un caso donde tenía que usar la información de un formulario en otro y fue imposible. En ese momento investigando aprendí como manejarlos y ahora te compartiré como.
Lo primero que debes hacer es el HTML para hacer un formulario, en este caso veremos el siguiente código en HTML.
<form action="<?php echo esc_url( admin_url('admin-post.php') ); ?>" method="post">
<label for="nombre">Nombre:</label>
<input type="text" id="nombre" name="nombre">
<label for="mensaje">Mensaje:</label>
<textarea name="mensaje" id="mensaje" cols="15" rows="4"></textarea>
<input type="hidden" name="action" value="contacto">
<input type="submit" value="Enviar">
</form>
Vemos como en el form se redirige la información al fichero admin-post.php. Es el fichero encargado de manejar todas las solicitudes de envío de datos de formularios en WordPress. Ahora veamos los código para manejar los datos del formulario y enviar un email.
<?php
/**
* Función para capturar los valores del
* formulario de contacto del website.
*
* Los datos son enviados por email a tucorreo@midominio.com
*/
function enviar_formulario(){
// Verificamos que los 2 campos tengan valores
if( empty( $_POST['nombre'] ) || empty( $_POST['mensaje'] ) ):
// Enviamos al usuario a la misma página con una variable GET de error.
wp_redirect( add_query_arg( array( 'errormsg' => "Campos Vacios" ), get_home_url() . '/contacto') );
exit;
endif;
// SIEMPRE SE DEBEN SANITIZAR LOS VALORES
$nombre = sanitize_text_field( $_POST['nombre'] );
$mensaje = sanitize_text_field( $_POST['mensaje'] );
wp_mail( "tucorreo@midominio.com”, "Formulario de contacto", $nombre . " envió este mensaje => " . $mensaje );
/* Una vez que hayamos trabajado con los datos debemos
redireccionar al usuario a la misma u a otra nueva página.
En nuestro ejemplo, vamos a redirigirlo a la misma página
de contacto con una variable de éxito.*/
wp_redirect( get_home_url() . '/contacto?exito=1'); exit;
}
add_action('admin_post_nopriv_contacto', 'enviar_formulario_por_email');
add_action('admin_post_contacto', 'enviar_formulario_por_email');
Con eso trabajamos los datos y los enviamos por correo aunque pudimos haberlos almacenados sin problema.
Es todo por hoy, nos vemos en el próximo tutorial ?.