a programmer working from home

Conectar Contact Form 7 con una base de datos externa

En este tutorial, aprenderás a crear un plugin personalizado de WordPress que conecta el popular plugin Contact Form 7 con una base de datos externa a WordPress. Al final de este tutorial, tendrás un plugin que guarda los datos enviados a través de un formulario de contacto en una base de datos externa.

En este tutorial, aprenderás a crear un plugin personalizado de WordPress que conecta el popular plugin Contact Form 7 con una base de datos externa a WordPress. Al final de este tutorial, tendrás un plugin que guarda los datos enviados a través de un formulario de contacto en una base de datos externa.

image 86

Preparación:

  1. Asegúrate de tener instalado y activado Contact Form 7 en tu sitio WordPress.
  2. Crea un formulario en Contact Form 7 y toma nota del ID del formulario que utilizarás en este tutorial.

Paso 1: Configurar el entorno de desarrollo

  1. En la carpeta wp-content/plugins de tu instalación de WordPress, crea una nueva carpeta llamada “cf7-external-db”.
  2. Dentro de esta carpeta, crea un archivo llamado “cf7-external-db.php” e incluye la siguiente información en la cabecera del archivo:
<?php
/*
Plugin Name: Contact Form 7 - Base de datos externa
Plugin URI: https://tusitio.com/cf7-external-db
Description: Un plugin personalizado de WordPress para conectar Contact Form 7 con una base de datos externa.
Version: 1.0
Author: Tu nombre
Author URI: https://tusitio.com
License: GPL2
*/

Paso 2: Establecer la conexión a la base de datos externa utilizando $wpdb

Añade las siguientes variables globales y la función de conexión en “cf7-external-db.php”:

// Reemplaza con los detalles de conexión de tu base de datos externa
define('CF7_EXTERNAL_DB_HOST', 'tu_host');
define('CF7_EXTERNAL_DB_USER', 'tu_usuario');
define('CF7_EXTERNAL_DB_PASSWORD', 'tu_contraseña');
define('CF7_EXTERNAL_DB_NAME', 'tu_base_de_datos');
function cf7_external_db_connect() {
    global $wpdb;
    
    $wpdb_external = new wpdb(CF7_EXTERNAL_DB_USER, CF7_EXTERNAL_DB_PASSWORD, CF7_EXTERNAL_DB_NAME, CF7_EXTERNAL_DB_HOST);
    $wpdb_external->set_prefix($wpdb->prefix);
    return $wpdb_external;
}

Paso 3: Enviar datos del formulario a la base de datos externa utilizando $wpdb

Reemplaza la función cf7_external_db_store_data en “cf7-external-db.php” con la siguiente función que utiliza la clase $wpdb para almacenar los datos del formulario:

function cf7_external_db_store_data($cf7) {
    // Reemplaza con el ID de tu formulario de Contact Form 7
    $target_form_id = 123;
    
    if ($cf7->id() == $target_form_id) {
        $submission = WPCF7_Submission::get_instance();
        $data = $submission->get_posted_data();
        $name = isset($data['your-name']) ? sanitize_text_field($data['your-name']) : '';
        $email = isset($data['your-email']) ? sanitize_email($data['your-email']) : '';
        $message = isset($data['your-message']) ? sanitize_textarea_field($data['your-message']) : '';
        $wpdb_external = cf7_external_db_connect();
        $result = $wpdb_external->insert(
            'contact_form_entries',
            array(
                'name' => $name,
                'email' => $email,
                'message' => $message,
                'submitted_at' => current_time('mysql', 1)
            ),
            array('%s', '%s', '%s', '%s')
        );
        if ($result === false) {
            error_log('Error al insertar los datos en la base de datos externa: ' . $wpdb_external->last_error);
        }
    }
}
add_action('wpcf7_before_send_mail', 'cf7_external_db_store_data');

Paso 4: Probar el plugin

  1. Navega al panel de administración de WordPress y asegúrate de que tu plugin esté activado.
  2. Ve a la página del formulario de contacto creado en Contact Form 7 y envía algunos datos de prueba.
  3. Verifica si los datos enviados se guardaron correctamente en la base de datos externa utilizando la clase $wpdb.

Código Completo

<?php
/*
Plugin Name: Contact Form 7 - Base de datos externa
Plugin URI: https://tusitio.com/cf7-external-db
Description: Un plugin personalizado de WordPress para conectar Contact Form 7 con una base de datos externa.
Version: 1.0
Author: Tu nombre
Author URI: https://tusitio.com
License: GPL2
*/
// Reemplaza con los detalles de conexión de tu base de datos externa
define('CF7_EXTERNAL_DB_HOST', 'tu_host');
define('CF7_EXTERNAL_DB_USER', 'tu_usuario');
define('CF7_EXTERNAL_DB_PASSWORD', 'tu_contraseña');
define('CF7_EXTERNAL_DB_NAME', 'tu_base_de_datos');
function cf7_external_db_connect() {
    global $wpdb;
    
    $wpdb_external = new wpdb(CF7_EXTERNAL_DB_USER, CF7_EXTERNAL_DB_PASSWORD, CF7_EXTERNAL_DB_NAME, CF7_EXTERNAL_DB_HOST);
    $wpdb_external->set_prefix($wpdb->prefix);
    return $wpdb_external;
}
function cf7_external_db_store_data($cf7) {
    // Reemplaza con el ID de tu formulario de Contact Form 7
    $target_form_id = 123;
    
    if ($cf7->id() == $target_form_id) {
        $submission = WPCF7_Submission::get_instance();
        $data = $submission->get_posted_data();
        $name = isset($data['your-name']) ? sanitize_text_field($data['your-name']) : '';
        $email = isset($data['your-email']) ? sanitize_email($data['your-email']) : '';
        $message = isset($data['your-message']) ? sanitize_textarea_field($data['your-message']) : '';
        $wpdb_external = cf7_external_db_connect();
        $result = $wpdb_external->insert(
            'contact_form_entries',
            array(
                'name' => $name,
                'email' => $email,
                'message' => $message,
                'submitted_at' => current_time('mysql', 1)
            ),
            array('%s', '%s', '%s', '%s')
        );
        if ($result === false) {
            error_log('Error al insertar los datos en la base de datos externa: ' . $wpdb_external->last_error);
        }
    }
}
add_action('wpcf7_before_send_mail', 'cf7_external_db_store_data');
?>

Conclusion

Ahora tienes un plugin personalizado de WordPress que utiliza la clase $wpdb para conectar Contact Form 7 con una base de datos externa y almacenar los datos enviados a través del formulario. Puedes seguir personalizando este plugin según tus necesidades.

Suscripción al Newsletter

Si estás interesado en aprender más sobre WordPress, no olvides suscribirte a nuestro blog para recibir las últimas noticias y consejos sobre WordPress, alojamiento web.

¿Necesitas un Hosting para tu Web?

Anuncio - Hosting Web de SiteGround - Diseñado para una fácil administración web. Haz clic para saber más.

Anuncio - Hosting Web de SiteGround - Diseñado para una fácil administración web. Haz clic para saber más.

¿Necesitas ayuda con un Proyecto Web o un Plugin a Medida?

Si ¿Necesitas ayuda con algún proyecto web? No dudes en contactarme desarrollo soluciones completas y personalizadas con WordPress y PHP, con herramientas y procesos modernos, utilizando HTML, CSS, SCSS, PHP, JavaScript, Bootstrap y más… Si ¿Estás listo? ¡Envíame un mensaje y hablemos de tu proyecto web!