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!
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:
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.
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.
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.
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 begrepetNavn
slug
term_group
er et felt som ikke for øyeblikket brukes av WordPress, slik at du trygt kan ignorere det.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 tabellenterm_id
representerer ID av termen, knyttet til sin post i wp_termstaksonomi
er navnet på taksonomien som begrepet er ibeskrivelse
forelder
refererer til begrepet foreldrebegrep, hvis taksonomien er hierarkisk og den har entelle
er telling av innlegg med begrepetI 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
.
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
bordterm_taxonomy_id
er knyttet til samme felt i wp_term_taxonomy
bordterm_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.
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.