RadioWordPress #28: Base de datos de WordPress

Descripción de la base de datos de WordPress en Codex de WordPress: https://codex.wordpress.org/Database_Description

Mapa de la base de datos de WordPress (versión 4.7.2)

base de datos de WordPress
base de datos de WordPress

Hoy vamos a hablar de la base de datos de WordPress, de la base de datos y de las tablas que la componen en el momento de la instalación, las 12 tablas, porque son 12, aunque antiguamente eran 11.

De estas 12 tablas de todos modos sólo hay 11 que vayamos a usar, la tabla wp_links que por defecto si es una instalación nueva no se usa y se mantiene para mantener compatibilidad con versiones anteriores de WordPress.

La base de datos de WordPress tiene 6 partes principales: opciones, posts, taxonomía, usuarios, comentarios y enlaces, así que voy a utilizar esta organización lógica de las tablas para poder ir al tema.

Vamos a empezar con la parte de opciones generales de nuestro WordPress, esa es la tabla wp_options, en esta tabla tendremos el ID de la fila, el nombre de opción, el valor y luego un campo en el que indicamos si carga automáticamente o no.

Esta sería la estructura de la tabla wp_options, pero esta tabla es muy importante ya que va toda la información general del WordPress, todas esas cosas que se configuran en la sección de ajustes, pues bien toda esa información va aquí.

Además es muy normal que los plugins guarden información en esta tabla con lo que se enguarrina mucho la verdad, hay que cuidarla y limpiarla no es una tarea siempre obvia, así que con esta tabla hay que ir con especial cuidado.

Otra parte importante es la parte de posts, que está compuesta por las tablas wp_posts y por wp_postmeta.

La tabla wp_posts tiene este nombre por motivos históricos, de cuando WordPress sólo servía para publicar posts, pero no almacena sólo información sobre los posts, sino que almacena información sobre las páginas, los menús, los enlaces a los medios subidos y los propios posts así como las revisiones de todo.

Recordad que una revisión es un post en si mismo, es una fila dentro de la tabla, como un post o una página.

¿Información que haya en esta tabla y que sea importante?, pues toda la verdad, pero es aquí donde podemos ver si una entrada o página acepta comentarios o pings. También podemos ver si es un post, una página, un adjunto o cualquier otro tipo de post type, esto lo vemos en la columna post_type.

Así que si creáis un custom post_type que sepáis que donde va a ir a parar es aquí.

Otra cosa que podemos ver en esta tabla es si hay borradores, revisiones, etc… es una tabla muy completa en la que merece la pena perderse un buen rato.

Supongo que si estáis viendo la tabla mientras estoy hablando y si ya la habéis visto os estaréis dando cuenta que no está normalizada, sólo con ver que hay muchas columnas en las que se repiten constantemente los mismos datos canta bastante. Esto no es así por incompetencia del diseño de WordPress, sino por rendimiento, al premiar el rendimiento en el caso se funcionamiento de la web puede pasar que un simple update tarde un montón y se cargue el servidor, porque la base de datos de WordPress está pensada para generar contenido para servir y no para realizar otro tipo de acciones. Es decir, la estructura de las tablas está pensada para optimizar al máximo el rendimiento como motor web y no para seguir el funcionamiento estándar de bases de datos.

Bueno, después de este pequeño inciso podemos ver la tabla wp_postmeta que es la segunda tabla de la sección de posts.

En esta tabla lo único que se hace es proporcionar metas a cada uno de los posts, sean posts, entradas o cualquier cosa. Un meta en este caso no es otra cosa que un dato extra que se aplica como por ejemplo el contenido de los campos de un formulario, en fin, es un poco cajón de sastre esta tabla la verdad.

Ahora vamos a pasar a la tercera parte, las tablas de usuarios, que también son dos wp_users y wp_usermeta, seguro que con lo que hemos hablado de los posts ya os hacéis un poco la idea de qué hace cada una de las tablas pues es un caso muy similar.

En la tabla wp_users guardamos como muy bien dice su nombre los datos de los usuarios, esta tabla es quizás una de las más utilizadas en el momento el que se pierde una contraseña, pues es aquí donde podemos cambiar la contraseña de WordPress, para eso lo único que tenemos que hacer es venir aquí y en la columna user_pass escribir la contraseña que queramos, pero antes indicando que convierta a MD5 ese valor, en phpmyadmin sería desplegando la función y usando MD5 y escribiendo a la derecha la contraseña, así de fácil. Muchas veces es mucho más rápido hacer esto que hacer una recuperación con el email.

En la tabla wp_usermeta incluiremos datos como el color del interfaz y cosas así,

Vamos a por la parte de comentarios que son otra vez dos tablas wp_comments y wp_commentsmeta, aquí el mismo funcionamiento que antes.

En la tabla wp_comments tenéis información como la IP del que escribe el comentario, el correo electrónico, el comentario en si o incluso si es una contestación a otro comentario y en la tabla wp_commentsmeta la información complementaria a los comentarios.

Estas son quizás las dos tablas más sencillitas

Y llegamos a la sección de taxonomía, aquí son 4 tablas. Cuando hablamos de taxonomía hablamos de categorías, etiquetas o de cualquier otro tipo de taxonomía que nos queramos inventar, todo eso cae en este saco.

La primera tabla será la de wp_terms que lo que hace es guardar la taxonomía y el slug, que el slug recordad que no es más que cómo se va a mostar en la URL esa categoría, etiqueta o lo que sea.

La segunda tabla va a ser wp_term_relationships, la cual va a relacionar las entradas o páginas con las taxonomías, simplemente es una tabla intermedia que hace las relaciones, esta sí está perfectamente normalizada.

La tabla wp_term_taxonomy nos va a indicar qué es cada taxonomía, si es una etiqueta, una categoría o lo que sea, así se sencillo.

Y la última tabla que es wp_termmeta que sí, es lo que estáis pensando, esta tabla lo que tiene toda la información extra necesaria de las taxonomías, esta tabla suele estar vacia, así que si la tenéis vacía no os asustéis.

Es posible que ahora vosotros estéis viendo en vuestra base de datos de WordPress más tablas, es normal, pero no son las que instala WordPress. Es muy normal que los plugins instalen tablas para sus cosas, así que no os asustéis si veis tablas nuevas, pero es importante tener todas estas tablas controladas para que no crezcan hasta el infinito.

Otro día si queréis podemos hablar de cómo mantener un poco todo este follón de tablas para que el rendimiento de nuestro WordPress sea óptimo.

Sólo me queda despedirme y comentaros que si os interesa ver cómo funciona toda la parte de WordPress por debajo, los servidores, infraestructura y demás podéis contactar conmigo en Tecnocrática y podré enseñar un poco todo esto que a veces nos quedamos sólo con la idea de que Internet acaba en el WordPress y no no, hay muchísimo trabajo por debajo.