Taxonomier är vad som tar WordPress utöver en enkel bloggplattform och in i riken i ett CMS.
Men hur lagras de i databasen?
Taxonomier och villkor är en kraftfull WordPress-funktion som låter dig lägga till mycket mer flexibilitet för dina webbplatser. De är relaterade till två andra innehållstyper: inlägg och länkar, och databasstrukturen innebär att detta är ett till många förhållande, där ett inlägg kan ha flera termer över flera taxonomier, och en term kan tilldelas flera inlägg eller länkar.
Jag börjar med att definiera dem, som i så många saker i WordPress, kan terminologin vara förvirrande!
En taxonomi är ett system för kategorisering eller klassificering av saker, normalt hierarkiskt. Den mest kända taxonomin är Linnean Taxonomy som används för att klassificera levande saker.
I WordPress används taxonomier för att klassificera dina data och gruppera den i uppsättningar och undergrupper.
WordPress levereras med tre taxonomier inbyggda:
Kategorier och taggar är lite som inlägg och sidor, eftersom de är samma typ av innehåll (taxonomier) men uppför sig som standard, i de kategorierna är hierarkiska och taggar inte.
Länkkategori taxonomy fungerar på liknande sätt som taggar och kan teoretiskt användas för alla objekttyper, men som standard visas den inte i efterbehandlingsskärmen och finns på länkredigeringsskärmen om länkar har blivit aktiverade.
Du kan också lägga till så många extra taxonomier som du vill använda egna taxonomier. Dessa uppför sig då på samma sätt som kategorier och taggar och har villkor. Var och en av dina taxonomier har då samma status som någon av de inbyggda taxonomierna. Detta liknar ett sätt att jämföra mellan inlägg och anpassade posttyper.
Varje taxonomi kommer att ha villkor som du använder för att sortera dina data. En kategori är bara en term i kategorin taxonomi, och en tagg är en term i tagg taxonomin. När du skapar taxonomier skapar du villkor för din taxonomi antingen via WordPress instrumentpanel eller med funktionen wp_insert_term ().
Villkoren kan vara mycket kraftfulla när de kombineras med egna frågor: du kan skapa anpassade mallfiler i dina teman eller plugins för att visa inlägg med flera termer, sortera efter termer, identifiera termer över taxonomier och mycket mer.
Som jag beskrivit i handledningen om relationer mellan data använder WordPress ett många till många förhållanden. Detta förhållande skapas genom att använda tre tabeller:
wp_term_relationships
wp_term_taxonomy
wp_terms
Dessa tabeller visas nedan, tillsammans med tabellerna de är kopplade till, wp_posts
och wp_links
:
Låt oss ta en titt på var och en av tabellerna och hur det fungerar.
De wp_terms
Tabellen lagrar alla de enskilda villkoren för dina kategorier, taggar, länkar kategorier och anpassade taxonomier. Den har bara fyra fält:
term_id
är det unika id för termennamn
snigel
term_group
är ett fält som för närvarande inte används av WordPress så att du säkert kan ignorera det.De wp_term_taxonomy
Bordet lagrar mer data om termer och taxomierna som de ingår i. Den har sex fält:
term_taxonomy_id
lagrar ett ID för posten i den här tabellenterm_id
representerar termens ID, kopplat till dess rekord i wp_termstaxonomi
är namnet på den taxonomi som termen finns ibeskrivning
förälder
hänvisar till termens överordnade term, om taxonomin är hierarkisk och den har enräkna
är antalet inlägg med termenI många WordPress-installationer kommer det att finnas en post i wp_term_taxonomy
tabell för varje term i wp_terms
tabell, men i vissa fall kommer du att ha mer än en post för varje term. Detta händer när du skapar två termer med samma namn och slug i olika taxonomier, och innebär att du kan skapa en fråga för att skriva ut inlägg med den termen i flera taxonomier.
Det betyder att förhållandet mellan dessa två tabeller är en till många: en post i wp_terms
tabellen kan kopplas till flera poster i wp_term_taxonomy
bord, men varje post i wp_term_taxonomy
är endast kopplad till en post i wp_terms
.
De wp_term_relationships
bordet är avgörande för att skapa det många till många förhållandet mellan objekt och termer. Den har bara tre fält:
object_id
är kopplad till post_id
i wp_posts
bord eller LINK_ID
i wp_links
tabellterm_taxonomy_id
är länkad till samma fält i wp_term_taxonomy
tabellterm_order
är ordningen i vilka termer som lagts till ett objekt. Detta används bara om du angav sorteringsargumentet för att vara sant när du registrerade taxonomin - default är false och standardvärdet för detta fält är 0.Eftersom varje objekt kan relateras till flera poster i wp_term_relationships
bord, och så kan varje term, detta skapar många till många relationer.
Förhållandet mellan objekt (dvs inlägg och länkar) och termer är en mycket kraftfull, delvis för att det är det enda många till många förhållandet som används av WordPress.
Förstå hur detta förhållande fungerar och där nyckeldata lagras hjälper dig att förstå hur taxonomier och villkor fungerar, och att använda de funktioner som är associerade med dem.