Base de Datos de WordPress | SEOenred, Agencia SEO

Las Páginas Web de hoy en día, existen gracias a las Bases de Datos. Si no hubiese Tablas dentro de Bases de Datos, donde almacenar la información dinámica que subimos o escribimos, en nuestra web, estas, no existirían; Tendríamos Páginas Webs Estáticas de solo lectura.

Vamos a intentar entender la Base de Datos de WordPress, su Estructura, sus Tablas, sus Puntos Débiles, etc, …

Como dijo Jack, «El Destripador», vayamos por partes.

WordPress es un Gestor de Contenido (O CMS – Content Management System, Sistema de Gestión de Contenidos) desarrollado en lenguaje PHP (PHP es un Lenguaje de Programación, para la creación de Sitios Web que se ejecuta en el servidor. El lenguaje PHP sirve para construir Páginas Web de Contenido Dinámico, es decir, que estén basadas en Bases de Datos y recursos que se encuentran en el Servidor de Alojamiento – Hosting), que guarda Datos, y ciertas partes de la configuración (Por supuesto, WordPress, también usa Bases de Datos para almacenar la información necesaria para que funcione), en una Base de Datos (Normalmente MySQL o MariaDB).

Dado lo que hemos dicho antes, la Base de Datos es muy importante, ya que contiene lo más importante de un Sitio Web, El Contenido. En muchos casos, es necesario entender la Base de Datos de WordPress y saber, qué podemos borrar, que podemos modificar y qué no tocar.

Una Base de Datos se va llenando de porquería con el tiempo y poco a poco puede complicarnos ciertas acciones. WordPress no es menos y por ejemplo, con las Copias de Seguridad, o con las «Slow Queries» (Consultas, SQL normalmente, que tardan demasiado tiempo en ejecutarse), cada vez que algún plugin realiza una consulta un poco compleja a la Base de Datos, se nos ralentizarán estas tareas y por lo tanto, la carga de la Página Web.

De forma nativa, es decir, predeterminada, WordPress trabaja con Bases de Datos MySQL y Bases de Datos MariaDB (Que es un Fork de MySQL, es decir, es una copia del Código de MySQL pero incluyendo Parches de Personalización, Parches de Optimizaciones y Parches de Seguridad, entre otros), siendo, entre ambas Bases de Datos, 100% compatibles.

Por otro lado, mediante Librerías Externas, también podemos hacer que WordPress funcione con la Base de Datos SQLite, que nos podría ser útil para ciertos hostings que no ofrecen tener Bases de Datos MySQL.

Al finalizar una Instalación de WordPress (Instalación Limpia de WordPress), se crea una Base de Datos con 12 Tablas que se usan para configurar y componer el contenido de la página web:

  • commentmeta: Cada comentario incorpora datos llamados Metadatos, que se guardan aquí.
  • comments: Contiene el contenido de los comentarios
  • links: Aquí se guarda información relativa a los enlaces añadidos en la funcionalidad de Enlaces de WordPress. Actualmente, esta tabla, está obsoleta pero puede volver a usarse con ciertos plugins. Antiguamente siempre venía activada al finalizar la instalación.
  • options: Es una de las tablas más importantes de WordPress, puesto que guarda toda la configuración y datos de contenido. Los ajustes que se configuran en la Sección de Ajustes del Panel de Administración de WordPress, se almacenan aqui. En el 99% de los casos, las slow queries ocurren en consultas realizadas a esta tabla.
  • postmeta: Contiene metadatos relacionados con las publicaciones de los artículos de la tabla wp_posts. En algunas ocasiones, cuando usamos ciertas plantillas, se puede llenar muy rápido con datos irrelevantes y causar slow queries también. Hay plugins que también añaden su propia información a esta tabla.
  • posts: Almacena el contenido de las publicaciones de los artículos, las páginas y cualquier custom-post que se registre en WordPress (Los productos WooCommerce). También se guardan los elementos de menú.
  • termmeta: Contiene los metadatos de las categorías y etiquetas. En algunos casos, esta tabla también ha sido protagonista de problemas y errores que provocaban altos consumos de recursos de CPU.
  • terms: Contiene las categorías y las etiquetas (Taxonomías) de la instalación WordPress
  • term_relationships: Almacena la asociación entre las publicaciones de los Artículos (Posts), las categorías y las etiquetas con las que están relacionados, es decir, las entradas y enlaces, están asociados a categorías y etiquetas (De la tabla wp_terms), y esta asociación, se guarda en esta tabla.
  • term_taxonomy: Aquí se guardan las descripciones de las etiquetas y categorías, es una tabla relacionada con wp_terms.
  • usermeta: Contiene metadatos de los usuarios registrados en la instalación de WordPress. Están relacionados con la tabla wp_users.
  • users: Contiene los datos de los usuarios que tenemos en WordPress.

Las tablas no tienen ningún prefijo por defecto, pero enproducción deberiamos crear la instalación de WordPress con las tablas con prefijos, de hecho, es lo recomendable para mejorar la seguridad del CMS.

Este es el esquema, generado con MySQL WorkBench, de la Base de Datos, por defecto, de un WordPress, con los distintos tipos de campos de datos:

 

Esquema de la Base de Datos por defecto de WordPress | SEOenred, Agencia SEO

 

Cuando un plugin necesita guardar datos en la Base de Datos de WordPress, puede hacerlo en las tablas existentes o crear tablas nuevas en la Base de Datos. Esto depende del tipo de datos que vaya a guardar el plugin.

En el caso de WooCommerce, a pesar de ser la solución para ecommerce más utilizada del mundo, es un plugin para WordPress y depende de la arquitectura de la Base de Datos de WordPress.

En una tienda online, con WooCommerce, todos los productos se meten en la tabla posts y postmeta, igual que si creamos entradas en nuestro blog. Por eso, cuando tenemos grandes catálogos de productos en WooCommerce, tenemos problemas con las consultas a la Base de Datos para obtener listados de los productos.