• 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 sin pluginsFormulario de contacto sin plugins en WordPress
  • Agregar CSS personalizado al área de administración de WordPressAgregar CSS personalizado al área de administración de WordPress
  • Agregar archivos de fuentes tipográficas en WordPressAgregar archivos de fuentes tipográficas en WordPress
  • Añadir código de Google Analytics sin plugins en WordPressAñadir código de Google Analytics sin plugins en WordPress
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (4 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/

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

Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

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

Populares

Añadir código de Google Analytics sin plugins en WordPress

Mostrar subcategorías de una categoría en listado de entradas

Generación de archivos de traducción en WordPress

Cómo modificar una plantilla de WooCommerce

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