Como esto es parte de una mayor comprensión del diseño, lo describiré como un todo ... :)
En WP 4.5.3 todavía hay todas estas tablas (hablaré de ellas sin prefijo):
- publicaciones
- term_relationships
- term_taxonomy
- términos
La ruta para obtener los nombres legibles de los términos de publicación pasa por todos ellos.
publicaciones
el identificador principal aquí es ID
- un id de una publicación (de cualquier tipo)
term_relationships
almacena pares de:
object_id
- puede ser posts.ID
(pero no tiene que ser)
term_taxonomy_id
: esta es la NO identificación de un término (categoría) pero una identificación de RELATIONSHIP entre un término (categoría) y taxonomía ("tipo de categoría")
term_taxonomy
El identificador principal aquí es term_taxonomy_id
descrito anteriormente ^^
otras columnas importantes:
term_id
- un ID de un término (categoría)
taxonomy
: almacena la taxonomía del término ("tipo de categoría")
Este podría parecer gracioso, pero la intención inicial era agregar la capacidad para que los términos tengan más taxonomías (lo que en algunos casos puede tener sentido).
términos
El identificador principal de aquí es el term_id
: el ID de una categoría
Otras columnas importantes aquí son:
name
- nombre legible de la categoría, p. ej. "Generos musicales"
slug
: el slug de un término utilizable, por ejemplo, en URL
Entonces el brutal que demuestra SQL para
obtener todas las publicaciones publicadas y todas sus categorías con los nombres de las categorías
podría tener este aspecto (agregue prefijos a las tablas cuando realice pruebas en su propio WP DB):
SELECT * FROM
posts #gets posts
LEFT JOIN
term_relationships #gets posts relationships to term_taxonomies
ON(posts.ID=term_relationships.object_id)
LEFT JOIN
term_taxonomy #gets term_ids
ON(term_relationships.term_taxonomy_id=term_taxonomy.term_taxonomy_id)
LEFT JOIN
terms #finally, gets terms' names
ON(term_taxonomy.term_id=terms.term_id)
WHERE (
(posts.post_status='publish')
#optionally you can filter by a certain post_type:
#AND
#(posts.post_type='some_post_type')
)
ORDER BY posts.ID ASC