Förstå och arbeta med data i WordPress - Multisite

I de tidigare delarna av denna serie har vi arbetat igenom de olika tabellerna i WordPress-databasen och undersökt vilka data de lagrar, hur de interagerar med varandra och vilka funktioner du använder för att interagera med dem.

I den här sista delen fortsätter jag att titta på Multisite. Databasen för en WordPress Multisite-installation kommer att innehålla extra tabeller: en uppsättning tabeller för varje webbplats som körs på nätverket och några extra tabeller för själva nätverket, samt tabellerna för kärnan. 

Det betyder att det finns tre element för att förstå hur databasen fungerar i Multisite:

  • Databas tabeller för kärnplatsen
  • Databas tabeller för nätverket
  • Databas tabeller för varje ytterligare webbplats.

Jag börjar med att titta på hur WordPress lagrar data för kärnan.

Databas Tabeller för Core Site i Multisite

För kärnsidan i ett nätverk använder WordPress samma 11 databas tabeller som i en enda webbplatsinstallation:

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

Dessa kommer att innehålla uppgifter om huvudplatsen. Två av dem kommer också att innehålla uppgifter om resten av nätverket. Dessa är:

  • wp_users
  • wp_usermeta

De övriga nio tabellerna fungerar på samma sätt som de gör för en enda webbplats - de lagrar data om huvudwebbplatsens innehåll. Men de sista två tabellerna lagrar också användardata som är relevanta för hela nätverket, liksom användardata som endast används av kärnplatsen. Jag kommer att undersöka detta på ett ögonblick.

Databas tabeller för nätverket

Förutom att lagra användardata för hela nätverket i två av kärntabellerna skapar WordPress ytterligare tabeller i en Multisite-installation som innehåller data som rör nätverket och dess webbplatser. 

Dessa är:

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

WordPress använder dessa sju (eller sex) tabeller plus de två användartabellerna för att lagra all data om multisite-nätverket. Här är vad var och en av dem lagrar:

Tabell Data anteckningar
wp_blogs Det här fältet lagrar detaljer varje sida i nätverket, så det har bara en post för varje sida. Fält inkluderar blog_id, domän, registrerad (de data där webbplatsen skapades) och senast uppdaterad (igen, ett datum).
wp_blog_versions Den aktuella databasversionen för varje webbplats, uppdaterad när du uppdaterar nätverket. Tre fält: blog_id, db_version och senast uppdaterad
wp_registration_log Admin-användaren skapades när varje webbplats är registrerad För varje webbplats (identifierad av blog_id), bordet lagrar användar ID för administratören, deras e-postadress och det datum de registrerade.
wp_signups Lagrar data på webbplatser som har anmälts men inte aktiverats Fält inkluderar en unik signup_id för varje registrering registrerade domänen, titeln, användarnamn och e-postadress. När en webbplats är aktiverad raderas denna post och en post skapas i wp_blogs.
wp_site Lagrar webbadressen för huvudsidan Denna tabell har bara en post med tre fält: huvudwebbplatsens id (vilket kommer att vara 1), dess domän och banan (normalt /)
wp_sitemeta Lagrar metadata för nätverket Denna tabell motsvarar wp_options för hela nätverket. Den innehåller alla metadata relaterade till nätverksinställningarna plus mindre mängder metadata för enskilda webbplatser. Den har fyra fält: en unik meta_id, site_id (som länkar till wp_blogs), meta_key och meta_value.
wp_sitecategories Valfri tabell skapas endast om globala termer är aktiverade för en webbplats. Genom att aktivera globala termer kan du använda villkor på flera webbplatser i nätverket. Tabellen (om den är skapad) har fyra fält: cat_ID, CAT_NAME, category_nicename och senast uppdaterad. Observera att dessa tabeller lagrar termer, inte bara kategorier, trots fältnamnen.
wp_users Data om alla användare lagras här snarare än för varje webbplats, eftersom enskilda användare kan få tillgång till flera webbplatser i nätverket. I en Multiste installtion skapar WordPress två extra fält i wp_users Tabell: Spam och radering, vilka båda är booleska värden som inte uppfyller NEJ.
wp_usermeta De wp_usermeta Tabeller lagrar alla metadata för alla webbplatsanvändare Bordet används på samma sätt som för en enda platsinstallation.

Förhållanden mellan tabellerna

De flesta av dessa tabeller är relaterade till wp_blogs bord via blog_ID fält, eftersom all data som behövs för webbplatser i nätverket måste kopplas till kärnplatsens rekord. Undantagen är:

  • wp_sitecategories, som länkar till inlägg och annat innehåll
  • wp_signups, eftersom dessa inte är registrerade webbplatser än
  • wp_usermeta, som har en indirekt länk till wp_blogs via wp_users

För mer information om var och en av dessa tabeller och deras fält, se Codex-sidan i databasen.

Databas tabeller för webbplatser i ett nätverk

Det sätt på vilket WordPress lagrar data för var och en av webbplatserna i ditt nätverk är ganska enkelt: det skapar flera kopior av varje databas tabeller, en för varje webbplats. Men det skapar inte ytterligare kopior av wp_users och wp_usermeta som alla lagras i huvudbordet.

För att skilja mellan tabellerna för varje sajt, lägger WordPress sidans ID till tabellnamnet, till exempel för webbplats 2, wp_posts blir wp_2_posts.

Varje webbplats kommer att ha följande 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 ovan kommer att ersättas med det numeriska plats-ID. Alla dessa tabeller lagrar data på samma sätt för varje webbplats som de skulle om webbplatsen var en enda webbplatsinstallation.

Sammanfattning

Om du manipulerar, hämtar eller flyttar data från en WordPress Multisite-installation, är det viktigt att förstå hur Multisite lagrar data annorlunda än en Multisite-installation. 

Som jag har visat är det tre huvudelement i detta: tabeller som används för kärnplatsen; Tabeller som används för att lagra databasen om nätverket som helhet; och tabeller skapade för varje ny webbplats. Strukturen hos dessa liknar en enda platsinstallation så länge du kommer ihåg att de två tabellerna som lagrar data på användare inte dupliceras för varje webbplats.