Forstå og jobbe med data i WordPress - Multisite

I de tidligere delene av denne serien har vi jobbet gjennom de forskjellige tabellene i WordPress-databasen og undersøkt hvilke data de lagrer, hvordan de samhandler med hverandre og hvilke funksjoner du bruker til å samhandle med dem.

I denne siste delen fortsetter jeg å se på Multisite. Databasen for en WordPress Multisite-installasjon vil inneholde ekstra tabeller: et sett med tabeller for hvert nettsted som kjører på nettverket, og noen ekstra tabeller for selve nettverket, samt tabellene for kjerneområdet. 

Dette betyr at det er tre elementer å forstå hvordan databasen fungerer i Multisite:

  • Database tabeller for kjerneområdet
  • Database tabeller for nettverket
  • Database tabeller for hvert ekstra nettsted.

Jeg begynner med å se på hvordan WordPress lagrer data for kjerneområdet.

Database Tabeller for Core Site i Multisite

For kjerneområdet i et nettverk bruker WordPress de samme 11 databasetabellene som i en enkelt installasjon av et nettsted:

  • wp_posts
  • wp_postmeta
  • wp_comments
  • wp_commentmeta
  • wp_users
  • wp_usermeta
  • wp_links
  • wp_term_relationships
  • wp_term_taxonomy
  • wp_terms
  • wp_options

Disse vil inneholde data relatert til hovedstedet. To av dem vil også inneholde data knyttet til resten av nettverket. Disse er:

  • wp_users
  • wp_usermeta

De andre ni tabellene fungerer på samme måte som de gjør for et enkelt nettsted - de lagrer data om hovedsidenes innhold. Men de to siste tabellene lagrer også brukerdata som er relevante for hele nettverket, samt brukerdata som kun brukes av kjerneområdet. Jeg vil undersøke dette på et øyeblikk.

Database Tabeller for nettverket

I tillegg til å lagre brukerdata for hele nettverket i to av kjernebordene, oppretter WordPress også flere tabeller i en Multisite-installasjon som inneholder data knyttet til nettverket og dets nettsteder. 

Disse er:

  • wp_blogs
  • wp_blog_versions
  • wp_registration_log
  • wp_signups
  • wp_site
  • wp_sitemeta
  • wp_sitecategories (valgfri)

WordPress bruker disse syv (eller seks) tabeller pluss de to brukertabellene for å lagre alle dataene om multisite-nettverket. Her er hva hver av dem lagrer:

Bord Data Merknader
wp_blogs Dette feltet lagrer detaljer hvert nettsted i nettverket, så det har bare en post for hvert nettsted. Feltene inkluderer blog_id, domene, registrert (dataene som nettstedet ble opprettet til) og sist oppdatert (igjen en dato).
wp_blog_versions Den nåværende databaseversjonen for hvert nettsted, oppdatert når du oppdaterer nettverket. Tre felt: blog_id, db_version og sist oppdatert
wp_registration_log Admin-brukeren opprettet når hvert nettsted er registrert For hvert nettsted (identifisert av blog_id), bordet lagrer bruker-ID for administratoren, deres e-postadresse og datoen de registrerte.
wp_signups Lagrer data på nettsteder som er registrert for, men ikke aktivert Feltene inkluderer en unik signup_id for hver post, registrerte domenet seg, tittelen, brukerens innlogging og e-postadresse. Når et nettsted er aktivert, slettes denne platen og en plate er opprettet i wp_blogs.
wp_site Lagrer nettadressen for hovedsiden Denne tabellen har bare en post med tre felt: ID på hovedstedet (som vil være 1), domenet og banen (normalt /)
wp_sitemeta Lagrer metadata for nettverket Dette tabellen er ekvivalent av wp_options for hele nettverket. Den inneholder alle metadataene knyttet til nettverksinnstillingene pluss mindre mengder metadata for de enkelte nettstedene. Den har fire felt: en unik meta_id, site_id (som lenker til wp_blogs), meta_key og meta_value.
wp_sitecategories Valgfri tabell opprettet bare hvis globale vilkår er aktivert for et nettsted. Ved å aktivere globale vilkår kan du bruke vilkår på flere nettsteder i nettverket. Tabellen (hvis den er opprettet), vil ha fire felt: cat_ID, CAT_NAME, category_nicename og sist oppdatert. Merk at disse tabellene lagrer vilkår, ikke bare kategorier, til tross for feltnavnene.
wp_users Data på alle brukere er lagret her i stedet for for hvert nettsted, da enkelte brukere kan få tilgang til flere nettsteder på nettverket. I en Multiste installasjon oppretter WordPress to ekstra felt i wp_users tabell: spam og slettet, begge er boolske verdier som mislykkes til NEI.
wp_usermeta De wp_usermeta Tabeller lagrer alle metadata for alle nettstedbrukere Tabellen brukes på samme måte som for en enkelt installasjon.

Forhold mellom tabellene

De fleste av disse tabellene er relatert til wp_blogs bord via blog_ID feltet, da alle dataene som trengs for nettstedene i nettverket, må kobles til kjerneområdet. Eksemplene er:

  • wp_sitecategories, som lenker til innlegg og annet innhold
  • wp_signups, siden disse ikke er registrerte nettsteder ennå
  • wp_usermeta, som har en indirekte link til wp_blogs via wp_users

For mer detaljer om hver av disse tabellene og deres felt, se Codex-siden i databasen.

Database Tabeller for nettsteder i et nettverk

Måten som WordPress lagrer dataene for hver av nettstedene i nettverket ditt, er ganske enkelt: det oppretter flere kopier av hver databasetabell, en for hver side. Men det lager ikke flere kopier av wp_users og wp_usermeta som alle er lagret i hovedbordet.

For å skille mellom tabellene for hvert nettsted, legger WordPress til side ID-en til tabellnavnet, for eksempel for nettsted 2, wp_posts blir wp_2_posts.

Hvert nettsted vil ha følgende tabeller:

  • wp_xx_posts
  • wp_xx_postmeta
  • wp_xx_comments
  • wp_xx_commentmeta
  • wp_xx_links
  • wp_xx_term_relationships
  • wp_xx_term_taxonomy
  • wp_xx_terms
  • wp_xx_options

De xx ovenfor vil bli erstattet av den numeriske nettstedet ID. Alle disse tabellene lagrer data på samme måte for hvert nettsted som de ville hvis nettstedet var en enkelt nettstedinstallasjon.

Sammendrag

Hvis du manipulerer, henter eller flytter data fra en WordPress Multisite-installasjon, er det viktig å forstå måtene Multisite lagrer data på forskjellig fra en Multisite-installasjon. 

Som jeg har vist, er det tre hovedelementer til dette: Tabeller brukt til kjerneområdet; Tabeller som brukes til å lagre databasen om nettverket som helhet; og tabeller opprettet for hvert nytt nettsted. Strukturen av disse ligner på en enkelhetsinstallasjon så lenge du husker at de to tabellene som lagrer data på brukere ikke dupliseres for hvert nettsted.