En base de datos de WP hay la relaciones uno-a-uno, uno-a-muchos y de muchos-a-muchos donde la relación va en ambos sentidos. Esta es usada por WP en términos de taxonomía (incluyendo categorías y etiquetas ya que estos son simplemente taxonomías). Un post puede tener muchos términos asignados y un término pueden ser asignados a múltiples mensajes.
WordPress crea esta relación de la misma manera que cualquier otra base de datos: mediante el uso de una tabla intermedia que une las dos tablas con datos clave. En nuestro caso es la tabla wp_term_relationships , que une
wp_posts y
wp_term_taxonomy .
Se explica más fácilmente mirando en las dos tablas. La wp_postscontiene datos sobre cada post, mientras que la tabla
wp_term_taxonomy contiene datos sobre cada término, incluyendo la taxonomía y su ID.
Para crear un enlace entre un término en wp_term_taxonomy y un post en
wp_posts, WP crea un registro en
wp_term_relationships, que incluye el
post_id y el
term_id (almacenados como
object_id y
term_taxonomy_id, respectivamente, en
wp_term_relationships). Esto significa que la
wp_term_relationships puede incluir varios registros para cada post y varios registros para cada término, la creación de la relación de muchos a muchos.
El siguiente diagrama muestra cómo funciona:

- post1 tiene los términos 1 y 3
- post 2 tiene el 2
- post 3 tiene el 4
- post 4 tiene los términos 1 y 3
También podría mirar de la otra manera: el termino 3 se refiere a los post 1 y 4.
Sin embargo las cosas no terminan ahí. Hay una cuarta tabla, la wp_terms. Esta tiene datos sobre cada término: nombre, slug y la descripción para cada término. Cada término tiene sólo un registro en
wp_terms, por lo que la relación entre este y la
wp_term_taxonomy es en realidad uno-a-uno. Teóricamente hablando, no hay razón para que estos datos no se realizarsen en
wp_term_taxonomy, pero no es así.