En este artículo vamos a ver como esta estructurada la base de datos de WordPress. Las tablas principales que forman la base de datos de wordress y sus relaciones.
Conocer la base de datos de WordPress, como está estructurada: tablas, campos, relaciones; que información podemos encontrar en ella y de qué manera extraer los datos es imprescindible para que nuestra tarea de desarrollo sea mucho mas sencilla y llevadera.
Antes de entrar en la estructura de la base de datos de WordPress, hay que tener presente que WordPress usa MySQL. Suponemos que el lector tiene un cierto conocimiento de MySQL para entender bien toda la estructura.
La base de datos de WordPress se fundamenta en once tablas:
Nombre de la tabla | Descripción |
wp_post | Es la tabla más importante de la base de datos de WordPress. Guarda información sobre las entradas, las páginas, los ficheros adjuntos y los menús. Para cada versión de una entrada se guarda su contenido, el título, el autor, la fecha, el resumen, estatus,… Existe un campo (post_type) que indica de qué tipo es |
wp_postmeta | Metadatos de las entradas. Entre otras cosas guarda información sobre los adjuntos asociados |
wp_comments | En esta tabla se guardan los comentarios con su información asociada: autor, fecha, contenido, si está o no aprobado… |
wp_commentsmeta | Metadatos de los comentarios. Tan solo es usada por algunos plugins como Akismet |
wp_links | Lista de enlaces |
wp_term_relationships | A través de esta tabla se relacionan las entradas y los enlaces con sus respectivas etiquetas y categorías |
wp_term_taxonomy | Tabla de etiquetas y categorías. WordPress guarda juntas etiquetas y categorías tanto de los enlaces como de los posts (aunque no son compartidas) |
wp_terms | Nombres de las etiquetas y las categorías |
wp_users | Información de los usuarios. En esta tabla se guardan el nombre de usuario (nicename) el correo electrónico, la dirección web que este especifique, la fecha de registro, la clave de activación (que se envía para comprobar la dirección de correo electrónico de los nuevos usuarios) y el nombre que debe mostrarse |
wp_usersmeta | Opciones de los usuarios. Aquí se guarda el resto de información del usuario, como su nombre real, el tipo de editor que usa, su nivel… |
wp_options | Tabla de opciones de WordPress |
En la Imagen podemos ver todas las tablas de la base de datos de WordPress y las relaciones entre ellas.
Como es normal, la base de datos parece centrada en la tabla de entradas. Tan solo la tabla de opciones no mantiene ninguna relación con wp_posts.
Un detalle importante es que a pesar de que en la imagen el nombre de todas las tablas empieza por wp_ esto no siempre es así. WordPress permite cambiar el prefijo de las tablas para facilitar la convivencia de diferentes instalaciones del gestor de contenidos en una misma base de datos. Existe una clase global, llamada $wpbp que nos facilita el acceso a las tablas independientemente del prefijo que se le haya puesto al nombre.
Entradas, enlaces, categorías y etiquetas.
En la sguiente imagen vemos con más detalle la estructura para entradas, enlaces, categorías y etiquetas que son las tablas que mas se suelen utilizar a la hora de realizar consultas.
El cuadro de relaciones es algo más complejo pero también el más útil si lo entendemos correctamente. Puede ser de gran ayuda para los desarrolladores a la hora de realizar un plugin o definir una plantilla con los datos de WordPress.
Estas relaciones nos permiten saber las entradas de una determinada categoría o que tienen una determinada etiqueta. Aunque la tabla de enlaces seguramente no sería útil a la hora de visualizar Información, está incluida aquí porque forma parte del conjunto.
La relación entre las entradas y las categorías y/o las etiquetas se establece a través de la tabla wp_term_relationships, donde se guardan pares de valores compuestos por el identificador de la entrada y el identificador de la categoría o etiqueta (representado por el identificador de la tabla wp_term_taxonomy).
La “dificultad” de este conjunto de interrelaciones viene dada por la necesidad, si se quiere obtener las entradas de una determinada categoría por ejemplo, de obtener todas las entradas relacionadas desde la tabla wp_terms, donde estará el nombre de la categoría.
El camino será:
Buscar la categoría por su nombre en la tabla wp_terms. Obtenemos el identificador del término (campo term_id)
Con el identificador de la categoría buscar el identificador de la tabla wp_term_taxonomy (term_taxonomy_id). Puesto que podemos tener un mismo nombre asociado a categoría y etiqueta (por ejemplo), de los registros que obtengamos, nos quedaremos aquel que en el campo taxonomy tenga category . Con esto obtenemos el identificador term_taxonomy_id
En la tabla wp_term_relationships buscar todas las apariciones del identificador de wp_term_taxonomy ( term_taxonomy_id ). Obtendremos un conjunto de registros correspondiente con todas las entradas de esa categoría .
Obtener los datos que deseemos de las entradas a partir de los registros encontrados. A partir de estos sencillos pasos, se puede crear una consulta SQL que obtenga los títulos de todas las entradas de una determinada categorías (o cualquier otro dato que nos interese: fecha de publicación, contenido,…).
by