Poiché questa è una parte di una più ampia comprensione del design, lo descriverò come intero ... :)
In WP 4.5.3 ci sono ancora tutte queste tabelle (ne parlerò senza prefisso):
- messaggi
- term_relationships
- term_taxonomy
- condizioni
Il percorso per ottenere i nomi leggibili dei termini dei post li attraversa tutti.
pubblica
qui l'identificatore principale ID
: un ID di un post (di qualsiasi tipo)
term_relationships
memorizza coppie di:
object_id
- può essere posts.ID
(ma non deve essere)
term_taxonomy_id
- questo NON è un id di un termine (categoria) ma un id di RELATIONHIP tra un termine (categoria) e una tassonomia ("tipo di categoria")
term_taxonomy
l'identificatore principale qui è term_taxonomy_id
descritto sopra ^^
un'altra colonna importante:
term_id
- un id di un termine (categoria)
taxonomy
- memorizza la tassonomia del termine ("tipo di categoria")
Questo potrebbe sembrare divertente, ma l'intenzione iniziale era quella di aggiungere la possibilità per i termini di avere più tassonomie (che in alcuni casi può avere senso).
termini
l'identificatore principale qui è il term_id
- un id di una categoria,
altre colonne importanti qui sono:
name
- nome della categoria leggibile, ad esempio "Generi musicali"
slug
- la lumaca di un termine utilizzabile, ad esempio, nell'URL
Quindi il brutale dimostrativo di SQL per
ottenere tutti i post pubblicati e tutte le loro categorie con nomi di categorie
potrebbe apparire così (aggiungere prefissi alle tabelle quando si esegue il test sul proprio DB WP):
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