Cómo enviar correo con datos de formulario personalizado usando WordPress

25 oct 2017, 20:15:30
Vistas: 28.8K
Votos: 4

Tengo un formulario HTML personalizado con campos de entrada y casillas de verificación. Cuando envío este formulario quiero enviar un correo con todos los detalles del formulario desde el mismo PHP. ¿Cómo puedo enviar el correo electrónico desde WordPress? Soy bastante nuevo y agradecería su ayuda.

0
Todas las respuestas a la pregunta 3
4

wp_mail es la función que estás buscando.

Puedes tomar los datos del formulario enviado (por ejemplo, $_POST['email']) y luego usarlos para construir y ejecutar la función wp_mail. El siguiente ejemplo fue tomado de https://developer.wordpress.org/reference/functions/wp_mail/#user-contributed-notes

$to = $_POST['email']; //destinatario@ejemplo.com
$subject = 'El asunto';
$body = 'El contenido del correo electrónico';
$headers = array('Content-Type: text/html; charset=UTF-8');

wp_mail( $to, $subject, $body, $headers );

Además, el script anterior debería verificar posibles ataques maliciosos o entradas incorrectas por parte del usuario, pero la función wp_mail te permitirá enviar el correo electrónico.

Fuente: https://developer.wordpress.org/reference/functions/wp_mail/

25 oct 2017 20:24:28
Comentarios

¿Lo agrego al mismo archivo PHP que mi formulario?

Sourav Sourav
25 oct 2017 20:33:55

Depende de cómo estés manejando tus formularios. Si tienes el mismo PHP ejecutándose en la página de plantilla que tu formulario, entonces puedes (aunque no lo recomendaría). Te sugiero revisar estos dos enlaces para tener una idea de cómo manejar formularios en PHP (https://www.w3schools.com/php/php_forms.asp y https://www.w3schools.com/php/php_form_complete.asp). También puedes usar un plugin como Contact Form 7 (https://wordpress.org/plugins/contact-form-7/) si prefieres no escribir el PHP y trabajar directamente desde el WP-Admin.

Tom Tom
25 oct 2017 20:36:58

Gracias, ¿puedo escribir el cuerpo como HTML personalizado para que mi correo tenga un diseño único?

Sourav Sourav
25 oct 2017 21:52:58

@Sourav Sí, insertarías eso en el $body.

Tom Tom
25 oct 2017 22:48:44
2

Si no deseas escribir tu propio código (y el formulario de correo), considera un plugin de 'formulario de contacto'. Yo uso (y recomiendo) el plugin Contact Form 7. Te permite crear cualquier formulario, personalizar el diseño/apariencia/campos y el correo que se envía. Es un plugin muy potente y popular. Hay muchos otros plugins disponibles para añadir campos adicionales.

El único inconveniente menor es la documentación técnica escasa y a veces difícil de encontrar (y a veces desactualizada), como los filtros disponibles. Pero he encontrado soluciones para ello.

26 oct 2017 05:05:53
Comentarios

bueno, tengo un formulario personalizado, ¿puedo usar el plugin de formulario de contacto para enviar los correos?

Sourav Sourav
26 oct 2017 09:29:35

Tendrás que 'construir' el formulario mediante la interfaz del plugin. Aunque podría ser posible usar el proceso de 'envío' de CF7, tendrías que configurar muchas variables de CF7 para que funcione correctamente, y esas variables no están bien documentadas; tendrías que revisar su código. Lo más fácil es usar el constructor de formularios de CF7, en mi opinión.

Rick Hellewell Rick Hellewell
26 oct 2017 20:55:36
0

Una forma sencilla de publicar un formulario es utilizando un servicio de backend para formularios como https://www.formkeep.com

Todo lo que tienes que hacer es modificar la etiqueta action en tu formulario y el servicio de backend almacenará los datos y proporcionará formas de integrarlos con otros sistemas.

Aquí tienes un ejemplo de cómo modificar el HTML del formulario. Solo tendrías que reemplazar "example token" con una clave proporcionada por el servicio Formkeep:

<form accept-charset="UTF-8" action="https://formkeep.com/f/exampletoken" method="POST">
24 oct 2018 21:27:44