• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Themes / Guardar datos de formulario de contacto sin plugins

Guardar datos de formulario de contacto sin plugins

Guardar datos de formulario de contacto sin plugins

[ 21 abril 2021 ] [ Autor: Jhon Marreros Guzmán ][ Themes - Avanzado] [ ]

funcionalidad

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

En un artículo anterior habíamos visto cómo crear un formulario de contacto sin plugins en WordPress, debido a las múltiples sugerencias, en este artículo vamos a ver cómo guardar esos datos, que se envían por correo, en la base de datos de WordPress.

 

Resultado final

Al final lo que queremos obtener son los mensajes de los usuarios en el backend del sitio, tal como se muestra en la siguiente imagen:

Guardar datos enviados por el formulario en la base de datos

 

Custom Post Type Contacto

Para guardar los datos que se envían del formulario de contacto en la base de datos, usaremos un Custom Post Type (CPT).

En la creación de este CPT estamos quitando la opción de crear nuevos registros ya que sólo deberían usarse para mostrar registros agregados desde el formulario de contacto.

Puedes colocar directamente este código en el archivo functions.php de tu theme o en un archivo separado e incluirlo en el functions.php.

 

Modificando el código que procesa el formulario

Al código original del artículo agregaremos código para insertar un nuevo CPT cada vez que se envía un correo. Usaremos la función wp_insert_post() para insertar un nuevo CPT.


// 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);

	if ( $sendmail ){
		wp_insert_post([
			'post_title'	=>'Mensaje de '. $name,
			'post_type'		=>'contactos_post_type',
			'post_content'	=> $msg,
			'post_status' 	=> 'private',
			]);
	}

	wp_redirect( home_url("/contacto/")."?sent=".$sendmail ); //asumiendo que existe esta url
}

 

Conclusión

Como hemos visto, podemos guardar diferentes tipos de contenido en la base de datos usando la funcionalidad de CPT de WordPress, en este caso lo hemos usado para guardar los datos enviados a través de un formulario de contacto.

 

¿Aún con dudas?, en el siguiente video se detallan los puntos anteriores:

Suscríbete a DecodeCMS:  

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • Formulario de contacto con Ajax en WordPressFormulario de contacto con Ajax en WordPress
  • Agregar recaptcha v3 en formulario de contactoAgregar recaptcha v3 en formulario de contacto
  • Formulario de contacto sin pluginsFormulario de contacto sin plugins en WordPress
  • Cambiando la estructura de menú de WordPressCambiando la estructura de menú de WordPress
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (5 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

Comentarios

  1. Xavier Carrera

    22 abril, 2021

    Genial!!!
    Muchas gracias!!!

  2. VETORIANO

    29 abril, 2021

    Me sale este mensaje. Como solocionar ? https://vetoriano.com/contacto/
    Not Acceptable

    An appropriate representation of the requested resource could not be found on this server.
    MUCHAS GRACIAS!!!

    • Jhon Marreros Guzmán

      3 mayo, 2021

      Hola, al parecer ese mensaje esta relacionado con alguna regla de seguridad de tu servidor, podrías probar en otro servidor si te es posible y verificar.
      Saludos.

  3. Daniel Ramírez

    11 agosto, 2021

    Buena explicación, amigo.
    Tengo una consulta, si quiero enviar los registros a una base de datos diferente a la de WordPress, ¿Cómo debo a hacer en ese caso?, agradecería tu respuesta.

    • Jhon Marreros Guzmán

      19 agosto, 2021

      Hola, tendrías que realizar una conexión adicional y luego escribir en tu BD, revisa este artículo relaciondo: https://decodecms.com/leer-datos-desde-otra-base-de-datos-en-wordpress/

  4. suyen

    2 agosto, 2022

    Hola, como puedo agregar la informacion en una base de datos externa?,de antemano muchas gracias

    • Jhon Marreros Guzmán

      2 agosto, 2022

      Hola, reemplaza la función wp_insert_post, en tu caso tendrás que hacer la conexión a tu BD y construir una función que inserte los datos.

  5. Josue

    1 octubre, 2022

    Hola y gracias por compartir tus conocimientos.
    Si solo deseo agregar los datos del formulario a una tabla denteo de la base de datos del mismo wordpress (o sea sin enviar correo) como deberia modificarlo. Gracias

    • Jhon Marreros Guzmán

      2 octubre, 2022

      Hola, ya no uses la variable $sendmail ni la función wp_mail(), puedes eliminar esa línea y también quitarla de la condicional.

  6. Juan

    3 octubre, 2022

    Hola como puedo incluir datos adjuntos

    • Jhon Marreros Guzmán

      6 octubre, 2022

      Hola, si deseas adjuntos de correos lo haces en la función wp_mail(), si lo que deseas es guardarlo permanentemente en el servidor entonces hay que modificar el código para subida de archivos, evaluaré eso en un futuro artículo

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Presentación

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Jooble
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad social woocommerce

Populares

Fijar Widget lateral en WordPress sin plugins

Hosting WordPress ventajas y desventajas

Deshabilitar verificación del correo electrónico de administración

Usar Content Security Policy (CSP) en WordPress

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2023 Todos los derechos reservados