Comme cela fait partie d'une meilleure compréhension du design, je vais le décrire dans son ensemble ... :)
Dans WP 4.5.3 il y a encore tous ces tableaux (j'en parlerai sans préfixe):
- des postes
- term_relationships
- term_taxonomy
- termes
Le chemin pour obtenir les noms lisibles des termes de publication passe par tous.
affiche
l'identifiant principal ici ID
- l'identifiant d'un message (de tout type)
term_relationships
stocke des paires de:
object_id
- peut être posts.ID
(mais ne doit pas l' être)
term_taxonomy_id
- ce n'est PAS l' identifiant d'un terme (catégorie) mais un identifiant de RELATION entre un terme (catégorie) et la taxonomie ("type de catégorie")
term_taxonomy
le principal identifiant ici est term_taxonomy_id
décrit ci-dessus ^^
autres colonnes importantes:
term_id
- un identifiant d'un terme (catégorie)
taxonomy
- stocke la taxonomie du terme ("type de catégorie")
Celui-ci peut sembler drôle, mais l'intention initiale était d'ajouter la possibilité pour les termes d'avoir plus de taxonomies (ce qui, dans certains cas, peut avoir du sens).
termes
l'identifiant principal ici est le term_id
- un identifiant d'une catégorie d'
autres colonnes importantes ici sont:
name
- nom de catégorie lisible par exemple "Genres musicaux"
slug
- le slug d'un terme utilisable par exemple dans l'URL
Ainsi, la démonstration brutale de SQL pour
obtenir tous les articles publiés et toutes leurs catégories avec les noms des catégories
pourrait ressembler à ceci (ajouter des préfixes aux tableaux lors des tests sur votre propre 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