En los plugins de WordPress, cuando simplemente tienes que crear tus propias tablas

WordPress El encanto de WordPress reside enteramente en los plugins. Casi cualquier funcionalidad que desees se puede conseguir mediante plugins. Sin embargo, a medida que se multiplican las funciones, el almacenamiento de datos se convierte en un obstáculo inevitable. El sistema proporciona tablas ya preparadas como wp_posts, wp_comments y wp_options, que son suficientes para las tareas cotidianas. Pero cuando los datos comienzan a llegar a gran escala, las cosas empeoran.

Imagen[1] - Complemento de WordPress «Custom Data Tables»: guía práctica desde la creación de tablas hasta las actualizaciones.

¿Cuándo tendré que construir las mesas yo mismo?

Una vez creé un complemento para cursos en línea en el que se introducían una por una las inscripciones de los alumnos, los registros de progreso del curso y los resultados de los exámenes. Al principio, por pereza, lo volqué todo en el metadato de la publicación. En poco tiempo, la carga de la lista de administración se volvió tan lenta como el paso de un caracol: decenas de miles de registros hacían que la base de datos se quedara sin aliento. Los pedidos de comercio electrónico, los registros de comportamiento de los usuarios, las clasificaciones por puntos... Estos escenarios son muy similares. Campos de datos fijos, recuentos de filas que crecen como una bola de nieve y requisitos frecuentes de filtrado cruzado. En esta etapa, las tablas personalizadas dejan de ser opcionales y se convierten en una solución vital.

La documentación oficial lo deja bastante claro: evita crear nuevas tablas si puedes evitarlo. Pero fíjate en esto... WooCommerce el formulario de pedido, luego echa un vistazo LearnDash ¿El calendario de aprendizaje? Todos los plugins importantes tienen su propio conjunto de tablas, ¿no? Una vez que el proyecto se pone en marcha, lo que realmente importa es el rendimiento y el mantenimiento a largo plazo; la documentación a veces tiene que pasar a un segundo plano.

Imagen [2] - Complemento de WordPress «Custom Data Tables»: guía práctica desde la creación de tablas hasta las actualizaciones.

dbDelta: El método más fiable para crear tablas

A la hora de crear tablas, WordPress ofrece la excelente herramienta dbDelta. En lugar de forzar el proceso, primero examina la estructura de la tabla existente antes de proceder con las instrucciones escritas. SQL De dos en dos, modifica solo lo que sea necesario. Al actualizar los plugins, el mayor temor es perder los datos antiguos de los usuarios; dbDelta te ayuda a evitar ese inconveniente.

Al comenzar, primero requiera una vez el archivo upgrade.php, luego utilice la variable global $wpdb para obtener el prefijo de la tabla; esto es esencial en un entorno multisitio. Para el nombre de la tabla, simplemente escriba $wpdb->prefix seguido de su propio sufijo.

Un consejo útil al escribir sentencias CREATE TABLE: coloque cada campo en una línea separada, anteponga dos espacios a la clave principal y no olvide incluir `$wpdb->get_charset_collate()` al final. Estos detalles determinan si dbDelta puede reconocer su intención.

Imagen [3] - Complemento de WordPress «Custom Data Tables»: guía práctica desde la creación de tablas hasta las actualizaciones.

Un ejemplo real de almacenamiento de comentarios de usuarios

Por ejemplo, si deseo almacenar los comentarios de los usuarios, lo escribiría así:

PHP global $wpdb; $table_name = $wpdb->prefix . 'user_feedback'; $charset_collate = $wpdb->get_charset_collate();

$sql = "CREATE TABLE $table_name ( id mediumint(9) NOT NULL AUTO_INCREMENT, user_name tinytext NOT NULL, user_email text NOT NULL, message longtext NOT NULL,
  submitted_on datetime DEFAULT CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once ABSPATH . 'wp-admin/includes/upgrade.php'; dbDelta( $sql );

Inserta este fragmento en el gancho de activación y la tabla se creará silenciosamente en el momento en que se active el complemento.

¿Cómo se pueden migrar sin problemas las estructuras de las tablas durante las actualizaciones de los complementos?

Los plugins inevitablemente sufren iteraciones. Después de unos meses, es posible que de repente desees añadir un campo de «estado de lectura» o crear un índice para la columna de correo electrónico; simplemente activar los hooks no será suficiente para tales tareas.

Tengo la costumbre de almacenar un número de versión de la base de datos en la tabla de opciones, como «my_plugin_db_version». Al actualizar el complemento, comparo las versiones; si no coinciden, simplemente vuelvo a ejecutar «dbDelta». Este añade diligentemente los nuevos campos sin dañar en absoluto los datos antiguos. Este truco me ha salvado en múltiples ocasiones en entornos de producción.

Una vez me hice cargo de un complemento para otra persona y, después de que los usuarios lo actualizaran, todo se volvió un caos, todo porque el desarrollador había descuidado los cambios estructurales. Desde entonces, antes de lanzar nuevas versiones, siempre realizo varias rondas de pruebas dbDelta para ver exactamente qué áreas se han modificado.

Imagen [4] - Complemento de WordPress «Custom Data Tables»: guía práctica desde la creación de tablas hasta las actualizaciones.

Lectura y escritura diarias: Nunca olvides que la seguridad es lo primero.

La tabla está lista; ahora solo quedan las operaciones rutinarias de lectura y escritura. El método más fiable es utilizar las funciones insert, update, delete y get_results de $wpdb. No olvides nunca utilizar prepare(), aunque los datos parezcan limpios: la inyección SQL no es cosa de risa.

Formas habituales de insertar un comentario

Inserta un comentario, algo como esto:

PHP $wpdb->insert(     $table_name,     array(         'user_name' => sanitize_text_field( $_POST['name'] ),         'user_email' => sanitize_email( $_POST['email'] ),
        'mensaje' => sanitise_textarea_field( $_POST['mensaje'] ), 'enviado_el' => current_time( 'mysql' ) ), array( '%s', '%s', '%s', '%s' ) );

Normalmente también lo envuelvo en una pequeña función, como comprobar los comentarios por correo electrónico o recuperar las últimas diez entradas, para que el código principal no parezca tan desordenado.

Cuando desinstales plugins, recuerda limpiar después.

El día en que se desinstala un complemento, los usuarios suelen querer llevarse sus datos consigo, a menos que hayas acordado explícitamente conservarlos de antemano. El enfoque más limpio es crear un archivo `uninstall.php` independiente en el directorio raíz, que solo se active durante la desinstalación real. En él, puedes ejecutar `DROP TABLE` o realizar una limpieza selectiva basada en la configuración, lo que prefieras. Esto es mucho más fiable y transparente que utilizar `register_uninstall_hook`.

Algunos complementos incluyen una opción para «conservar los datos», lo cual depende de para quién se esté creando. Los sitios corporativos pueden preferir conservarlos, mientras que las herramientas ligeras suelen ser más populares cuando los datos se eliminan por completo.

Por último, unas palabras sobre la experiencia

A la hora de decidir si utilizar o no tablas personalizadas, es aconsejable pensarlo dos veces. A menudo, los tipos de entradas personalizadas son más adecuados... meta A decir verdad, ya es suficiente. Pero para avanzar de verdad, hay que seguir las convenciones de las bases de datos: añadir índices donde sea necesario, no comprometer nunca los tipos de campo y habilitar sin falta utf8mb4. ¿Quién no usa emojis hoy en día?

A lo largo de los años que llevo desarrollando plugins, he descubierto que los proyectos que menos problemas dan son siempre aquellos que sientan sus bases en la capa de datos. Una vez que la estructura de la tabla es sólida, las tareas posteriores, como la paginación, las copias de seguridad y las consultas complejas, se ejecutan con mucha más fluidez.

Si no sabes si construir tu propia tabla, no dudes en compartir tu caso en los comentarios. Una breve charla podría revelarte la solución más sencilla.


Contacte con nosotros
¿No puede leer el tutorial? Póngase en contacto con nosotros para obtener una respuesta gratuita. Ayuda gratuita para sitios personales y de pequeñas empresas
Servicio de atención al cliente WeChat
Servicio de atención al cliente WeChat
Tel: 020-2206-9892
QQ咨询:1025174874
(iii) Correo electrónico: info@361sale.com
Horario de trabajo: de lunes a viernes, de 9:30 a 18:30, días festivos libres
© Declaración de reproducción
Este artículo fue escrito por: ladrones serán ratas y ratones coraje
EL FIN
Si le gusta, apóyela.
felicitaciones921 compartir (alegrías, beneficios, privilegios, etc.) con los demás
comentarios compra de sofás

Por favor, inicie sesión para enviar un comentario

    Sin comentarios