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:
Jag börjar med att titta på hur WordPress lagrar data för kärnan.
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.
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. |
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ållwp_signups
, eftersom dessa inte är registrerade webbplatser änwp_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.
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.
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.