Estructura de la base de datos de WordPress

1 octubre, 2015
No hay comentarios

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.

estructura_base_datos_wordpress

 

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.

estructura_base_datos_wordpress_2

 

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,…).

 

Facebooktwitterredditpinterestlinkedinmailby feather