Förstå och arbeta med taxonomier och villkor i WordPress

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!

Definitioner

taxonomier

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:

  • kategori
  • märka
  • länk kategori

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.

Villkor

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.

Hur WordPress lagrar taxonomier och villkor

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.

Wp_terms-tabellen

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 termen
  • namn
  • 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.

Tabellen wp_term_taxonomy

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 tabellen
  • term_id representerar termens ID, kopplat till dess rekord i wp_terms
  • taxonomi är namnet på den taxonomi som termen finns i
  • beskrivning
  • förälder hänvisar till termens överordnade term, om taxonomin är hierarkisk och den har en
  • räkna är antalet inlägg med termen

I 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.

Tabellen wp_term_relationships

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 tabell
  • term_taxonomy_id är länkad till samma fält i wp_term_taxonomy tabell
  • term_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.

Sammanfattning

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.