Forstå og jobbe med data i WordPress

Et WordPress-nettsted består av tre hovedelementer:

  1. WordPress-installasjonen selv
  2. Innholdet i wp-innhold katalog som inneholder temaer, plugins og opplastinger
  3. Databasen, hvor alt innholdet er lagret.

De fleste WordPress-brukere kommer aldri i direkte kontakt med databasen, og kan ikke engang være oppmerksom på at det hele tiden jobber med å fylle sin side. Når WordPress serverer noen form for side, være at hjemmesiden, et enkelt innlegg eller en side eller et arkiv, åpner det databasen for å hente innhold som redaktører og administratorer har lagt til siden.

I denne serien av opplæringsprogrammer ser jeg detaljert på ulike sider av WordPress-databasen. Serien vil ha ni deler, som dekker følgende:

  1. Introduksjon
  2. Forhold mellom data
  3. Innholdstyper
  4. Brukerdata
  5. metadata
  6. Taxonomier, kategorier, koder og vilkår
  7. Taxonomier vs postmetadata
  8. Alternativstabellen
  9. WordPress Multisite data

I denne introduksjonen gir jeg oversikt over databasetabellene og hvordan de relaterer seg til innholdstyper du kan være vant til å jobbe med i WordPress, og identifisere hva som er lagret der.

Innholdstyper i WordPress

Siden databasetabellene brukes til å lagre innhold, må du forstå innholdet før du kan forstå dem. Det finnes en rekke typer innhold i WordPress:

  • innlegg
  • sider
  • egendefinerte innleggstyper
  • vedlegg
  • lenker
  • navigasjonsmenyelementer (som lagres som individuelle innlegg)

Disse innholdstypene har da data knyttet til dem:

  • kategorier
  • tags
  • egendefinerte taksonomier og vilkår
  • post metadata

I tillegg til disse er det andre typer innhold som lagres annerledes:

  • widgets
  • opsjoner
  • brukere
  • nettsteder (for en flersidig installasjon)
  • hardkodet innhold (lagt til tema eller plugin)
  • innhold hentet fra andre steder (tredjepartsinnhold tilgjengelig via feeds, streaming eller andre teknikker)

Alle disse innholdstyper lagres et sted i databasen (eller av og til i temaer eller pluginfiler som jeg vil vise). De kan ha en egen oppføring, eller de kan være en del av en annen oppføring (for eksempel streamet innhold kodet til et innlegg). De kan også være knyttet til data i andre tabeller. For eksempel vil data om innlegg bli knyttet til data om brukere, slik at WordPress vet hvem som forfatter hvilke innlegg.

WordPress Database Structure

WordPress bruker en rekke databasetabeller med relasjoner mellom dem for å minimere mengden data som må lagres - dette skaper en til mange relasjoner. Dette betyr at en bruker kan ha mange innlegg som de forfattere relatert til deres brukeroppføring. Det sparer plass - hvis WordPress lagret alle brukerdataene for hver bruker mot hvert innlegg de forfattere, ville det bety mange gjentatte data og mye plass.

Diagrammet nedenfor er hentet fra WordPress-kodeksen og viser databasetabellene og hvordan de er koblet til:

De fleste tabellene er koblet til en eller flere andre tabeller via ett felt. Dette feltet vil være en unik identifikator for hver plate, for eksempel POST_ID. Dette vises mer detaljert i denne tabellen:

Bord Data lagret Knyttet til
wp_posts Innlegg, sider, vedlegg, revisjoner og navigasjonsmenyelementer wp_postmeta (via POST_ID)
wp_term_relationships(via POST_ID)
wp_postmeta Metadata for hvert innlegg wp_posts (via POST_ID)
wp_comments kommentarer wp_posts (via POST_ID)
wp_commentmeta Metadata for hver kommentar wp_comments (via comment_id)
wp_term_relationships Forhold mellom stillinger og taksonomier wp_posts (via POST_ID)
wp_term_taxonomy (via term_taxonomy_id)
wp_term_taxonomy Taxonomier (inkludert kategorier og koder) wp_term_relationships (via term_taxonomy_id)
wp_terms Dine kategorier og koder og vilkårene som er tilordnet tilpassede taksonomier wp_term_taxonomy (via term_id)
wp_links Lenkene i blogrollen din (hvis du fortsatt har en) wp_term_relationships (via LINK_ID)
wp_users brukere wp_posts (via post_author)
wp_user_meta Metadata for hver bruker wp_users (via bruker-ID)
wp_options Nettstedinnstillinger og alternativer (angitt via innstillingsskjermene og via plugin og tema) n / a

Noen ting er verdt å merke seg:

  • Database tabeller har wp_ prefiks som standard. Du kan endre dette når du konfigurerer nettstedet ditt, men det er ikke mye verdi for det.
  • Kjernebordet er wp_posts bord, hvor de fleste av dataene dine blir lagret. Dette holder (nesten) alt annet sammen.
  • Bare ett bord er ikke festet til noen andre - wp_options bord. Disse tabellene lagrer data om nettstedet og WordPress-installasjonen, som ikke er relatert til data om innlegg eller brukere.
  • To tabeller brukes til å lagre data om taksonomier - disse vil bli forklart mer detaljert senere i denne serien.
  • De wp_users og wp_comments Tabeller er ikke koblet til - selv om det er mulig å spesifisere at brukere må registreres for å kommentere, lagrer WordPress ikke faktisk data om kommentarer mot hver bruker som har postet dem. 
  • En flersidig installasjon vil ha noen ekstra tabeller. Jeg har ikke tatt med disse her som det er utenfor omfanget av denne opplæringen.

Kobling av innhold til databastabeller

Etter å ha sett på innholdstypene i WordPress og databasetabellene som brukes til å lagre dem, kan det være nyttig å matche de to opp. Tabellen nedenfor viser hvilken databasetabell som brukes til å lagre hver type innhold.

Innholdstype Tabell (s)
innlegg wp_posts
sider wp_posts
egendefinerte innleggstyper wp_posts
vedlegg wp_posts
lenker wp_links
navigasjonsmenyelementer wp_posts
kategorier wp_terms
tags wp_terms
egendefinerte taksonomier wp_term_taxonomy
taksonomi vilkår wp_terms
post metadata wp_post_meta
widgets wp_options
opsjoner wp_options
brukere wp_users
hardkodet innhold wp_posts (hvis lagt til innlegg)
wp_options (hvis lagt til widgets)
Tema- og pluginfiler (hvis hardkodede)
tredjeparts innhold wp_posts (hvis lagt til innlegg)
wp_options (hvis lagt til via widgets eller plugins)
Tema- og pluginfiler (hvis hardkodede)

Du har kanskje lagt merke til at ikke alle databasetabellene er inkludert i den tabellen. Det er fordi noen av dem er vant til å lagre metadata og andre er vant til å lagre relasjoner som begge vil bli dekket mer detaljert senere i denne serien.

Sammendrag

Forhåpentligvis har du nå en bedre forståelse av hvordan og hvor WordPress lagrer forskjellige typer data ved hjelp av databasestrukturen. Denne serien vil se nærmere på alle aspekter av dette. 

I neste del skal jeg undersøke relasjoner mellom data, og se nærmere på hvordan bestemte tabeller knyttes sammen og hvordan noen brukes til å lagre data om relasjoner.