Forstå og jobbe med taxonomier og vilkår i WordPress

Taxonomier er det som tar WordPress utover en enkel blogging plattform og inn i rike av et CMS. 

Men hvordan lagres de i databasen?

Taxonomier og vilkår er en kraftig WordPress-funksjon som lar deg legge til mye mer fleksibilitet for nettstedene dine. De er relatert til to andre innholdstyper: innlegg og koblinger, og databasestrukturen betyr at dette er et ett til mange forhold, hvor ett innlegg kan ha flere termer på tvers av flere taksonomier, og ett begrep kan tilordnes flere innlegg eller lenker.

Jeg begynner med å definere dem, som i så mange ting i WordPress, kan terminologien være forvirrende!

definisjoner

taksonomier

En taksonomi er et system for kategorisering eller klassifisering av ting, normalt hierarkisk. Den mest berømte taksonomien er Linnean Taxonomy som brukes til å klassifisere levende ting.

I WordPress brukes taxonomier til å klassifisere dataene dine og gruppere det i sett og undergrupper.

WordPress kommer med tre taksonomier innebygd:

  • kategori
  • stikkord
  • link kategori

Kategorier og koder er litt som innlegg og sider ved at de er samme type innhold (taksonomier), men oppfører seg annerledes som standard, i de kategoriene er hierarkiske og merker ikke.

Kategorien taksonomi fungerer på samme måte som koder og kan teoretisk brukes til alle objekttyper, men som standard vises den ikke i skjermbildet etter redigering og er i koblingsredigeringsskjermen hvis koblinger er aktivert.

Du kan også legge til så mange ekstra taksonomier som du vil bruke egendefinerte taksonomier. Disse oppfører seg så på samme måte som kategorier og koder, og har vilkår. Hver av dine taxonomier har da samme status som noen av de innebygde taksonomiene. Dette ligner på en måte å sammenligne mellom innlegg og egendefinerte innleggstyper.

Vilkår

Hver taksonomi vil ha vilkår du bruker til å sortere dataene dine. En kategori er bare et begrep i kategorien taksonomi, og en tag er et begrep i taggonomonomien. Når du oppretter taksonomier, vil du da opprette vilkår for taxonomiene dine enten via WordPress-dashbordet eller ved hjelp av funksjonen wp_insert_term ().

Vilkårene kan være svært kraftige når de kombineres med egendefinerte spørringer: Du kan opprette egendefinerte malfiler i dine temaer eller plugins for å vise innlegg med flere ord, sortere etter vilkår, identifisere vilkår på tvers av taksonomier og mye mer.

Hvordan WordPress lagrer taxonomier og vilkår

Som jeg beskrev i veiledningen om forhold mellom data, bruker WordPress et mange til mange forhold. Dette forholdet opprettes ved å bruke tre tabeller:

  • wp_term_relationships
  • wp_term_taxonomy
  • wp_terms

Disse tabellene er vist under, sammen med tabellene de er koblet til, wp_posts og wp_links:

La oss ta en titt på hvert bord og hvordan det fungerer.

Wp_terms Tabellen

De wp_terms Tabellen lagrer alle de individuelle vilkårene for kategoriene, kodene, koblingskategoriene og egendefinerte taksonomier. Den har bare fire felt:

  • term_id er den unike iden for begrepet
  • Navn
  • slug
  • term_group er et felt som ikke for øyeblikket brukes av WordPress, slik at du trygt kan ignorere det.

Wp_term_taxonomy Table

De wp_term_taxonomy Tabellen lagrer flere data om vilkår, samt de taxomier de er en del av. Den har seks felt:

  • term_taxonomy_id lagrer en ID for posten i denne tabellen
  • term_id representerer ID av termen, knyttet til sin post i wp_terms
  • taksonomi er navnet på taksonomien som begrepet er i
  • beskrivelse
  • forelder refererer til begrepet foreldrebegrep, hvis taksonomien er hierarkisk og den har en
  • telle er telling av innlegg med begrepet

I mange WordPress installasjoner vil det være en post i wp_term_taxonomy tabell for hvert begrep i wp_terms tabell, men i noen tilfeller vil du ha mer enn en post for hvert begrep. Dette skjer når du oppretter to termer med samme navn og sluger i forskjellige taksonomier, og betyr at du kan opprette en forespørsel for å skrive ut innlegg med dette begrepet i flere taksonomier.

Dette betyr at forholdet mellom disse to tabellene er en til mange: en plate i wp_terms Tabellen kan kobles til flere poster i wp_term_taxonomy bord, men hver post i wp_term_taxonomy er kun knyttet til en plate i wp_terms.

Tabellen wp_term_relationships

De wp_term_relationships Tabellen er avgjørende for å skape det mange til mange forholdet mellom objekter og vilkår. Den har bare tre felt:

  • object_id er knyttet til POST_ID i wp_posts bord eller LINK_ID i wp_links bord
  • term_taxonomy_id er knyttet til samme felt i wp_term_taxonomy bord
  • term_order er rekkefølgen i hvilke vilkår som ble lagt til et objekt. Dette brukes bare hvis du angav sorteringsargumentet for å være sant når du registrerte taksonomien - standard er false og standardverdien for dette feltet er 0.

Fordi hver gjenstand kan relateres til flere poster i wp_term_relationships bord, og så kan hvert begrep, dette skaper det mange til mange forhold.

Sammendrag

Forholdet mellom objekter (dvs. innlegg og linker) og vilkår er en veldig kraftig, delvis fordi det er det eneste mange til mange forhold som brukes av WordPress. 

Å forstå hvordan dette forholdet fungerer og hvor nøkkeldataene er lagret, hjelper deg å forstå hvordan taksonomier og vilkår fungerer, og å bruke funksjonene som er knyttet til dem.