In de eerdere delen van deze serie hebben we de verschillende tabellen in de WordPress-database doorgenomen en bekeken welke gegevens ze opslaan, hoe ze met elkaar omgaan en welke functies je gebruikt om met ze te communiceren.
In dit laatste deel ga ik verder met het bekijken van Multisite. De database voor een WordPress Multisite-installatie bevat extra tabellen: een reeks tabellen voor elke site die op het netwerk wordt uitgevoerd en enkele extra tabellen voor het netwerk zelf, evenals de tabellen voor de kernsite.
Dit betekent dat er drie elementen zijn om te begrijpen hoe de database werkt in Multisite:
Ik zal beginnen met te kijken hoe WordPress gegevens voor de kernsite opslaat.
Voor de kernsite in een netwerk gebruikt WordPress dezelfde 11 databasetabellen als in een installatie met één site:
wp_posts
wp_postmeta
wp_comments
wp_commentmeta
wp_users
wp_usermeta
wp_links
wp_term_relationships
wp_term_taxonomy
wp_terms
wp_options
Deze bevatten gegevens met betrekking tot de hoofdsite. Twee daarvan zullen ook gegevens bevatten met betrekking tot de rest van het netwerk. Dit zijn:
wp_users
wp_usermeta
De andere negen tabellen werken op dezelfde manier als voor een enkele site: ze slaan gegevens op over de inhoud van de hoofdsite. In de laatste twee tabellen worden echter ook gebruikersgegevens opgeslagen die relevant zijn voor het hele netwerk, evenals gebruikersgegevens die alleen door de kernsite worden gebruikt. Ik zal dit in een ogenblik onderzoeken.
Naast het opslaan van gebruikersgegevens voor het hele netwerk in twee van de kerntabellen, maakt WordPress ook extra tabellen in een multisite-installatie die gegevens bevatten met betrekking tot het netwerk en zijn sites.
Dit zijn:
wp_blogs
wp_blog_versions
wp_registration_log
wp_signups
wp_site
wp_sitemeta
wp_sitecategories
(Optioneel)WordPress gebruikt deze zeven (of zes) tabellen plus de twee gebruikerstabellen om alle gegevens over het Multisite-netwerk op te slaan. Dit is wat elk van hen opslaat:
Tafel | Gegevens | Notes |
---|---|---|
wp_blogs | In dit veld worden details van elke site in het netwerk opgeslagen, zodat deze slechts één record voor elke site heeft. | Velden omvatten blog_id , domein , geregistreerd (de gegevens waarop de site is gemaakt) en laatst bijgewerkt (nogmaals, een datum). |
wp_blog_versions | De huidige databaseversie voor elke site, bijgewerkt wanneer u het netwerk bijwerkt. | Drie velden: blog_id , db_version en laatst bijgewerkt |
wp_registration_log | De beheerder die is gemaakt toen elke site werd geregistreerd | Voor elke site (geïdentificeerd door blog_id ), slaat de tabel de gebruikersnaam voor de beheerder, hun e-mailadres en de datum waarop ze zich hebben geregistreerd. |
wp_signups | Slaat gegevens op sites die zijn aangemeld voor maar niet zijn geactiveerd | Velden bevatten een uniek signup_id voor elke record, waarvoor het domein is aangemeld, de titel, de gebruikersaanmelding en het e-mailadres. Zodra een site is geactiveerd, wordt deze record verwijderd en wordt een record aangemaakt in wp_blogs . |
wp_site | Slaat de URL op voor de hoofdsite | Deze tabel heeft slechts één record met drie velden: de id van de hoofdsite (welke zal zijn 1 ), het domein en het pad (normaal / ) |
wp_sitemeta | Slaat metadata op voor het netwerk | Deze tabel is het equivalent van wp_options voor het hele netwerk. Het bevat alle metadata met betrekking tot de netwerkinstellingen plus kleinere hoeveelheden metadata voor afzonderlijke sites. Het heeft vier velden: een uniek meta_id , Website ID (met links naar wp_blogs ), meta_key en meta_value . |
wp_sitecategories | Optionele tabel alleen gemaakt als algemene voorwaarden zijn ingeschakeld voor een site. | Als u algemene voorwaarden inschakelt, kunt u termen op meerdere sites in het netwerk gebruiken. De tabel (als deze is gemaakt), heeft vier velden: cat_id , CAT_NAME , category_nicename en laatst bijgewerkt . Merk op dat deze tabellen termen opslaan, niet alleen categorieën, ondanks de veldnamen. |
wp_users | Gegevens over alle gebruikers worden hier opgeslagen in plaats van voor elke site, omdat individuele gebruikers toegang hebben tot meerdere sites op het netwerk. | In een Multiste installtie maakt WordPress twee extra velden in de wp_users tabel: spam en verwijderd, beide zijn Booleaanse waarden die standaard worden gebruikt NEE . |
wp_usermeta | De wp_usermeta tabellen slaat alle metadata op voor alle sitegebruikers | De tabel wordt op dezelfde manier gebruikt als voor een installatie op één site. |
De meeste van deze tabellen zijn gerelateerd aan de wp_blogs
tafel via de blog_ID
veld, aangezien alle gegevens die nodig zijn voor de sites in het netwerk moeten worden gekoppeld aan de kernrecord van de site. De uitzonderingen zijn:
wp_sitecategories
, welke links naar berichten en andere inhoudwp_signups
, omdat dit nog geen geregistreerde sites zijnwp_usermeta
, die een indirecte link heeft naar wp_blogs
via wp_users
Zie de Codex-pagina in de database voor meer informatie over elk van deze tabellen en hun velden.
De manier waarop WordPress de gegevens opslaat voor elk van de sites in uw netwerk is redelijk eenvoudig: het maakt meerdere kopieën van elk van de databasetabellen, één voor elke site. Er worden echter geen extra exemplaren van gemaakt wp_users
en wp_usermeta
zoals deze allemaal zijn opgeslagen in de hoofdtabel.
Om onderscheid te maken tussen de tabellen voor elke site, voegt WordPress de site-ID toe aan de tabelnaam, dus bijvoorbeeld voor site 2, wp_posts
wordt wp_2_posts
.
Elke site heeft de volgende tabellen:
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
hierboven zal worden vervangen door de numerieke site-ID. Al deze tabellen slaan gegevens op dezelfde manier op voor elke site zoals ze zouden zijn als de site een enkele site-installatie zou zijn.
Als u gegevens van een WordPress Multisite-installatie manipuleert, ophaalt of verplaatst, is het belangrijk om te begrijpen op welke manieren Multisite gegevens anders bewaart dan een installatie op meerdere locaties..
Zoals ik heb laten zien, zijn er drie belangrijke elementen: tabellen die worden gebruikt voor de kernsite; tabellen die worden gebruikt om de database over het netwerk als geheel op te slaan; en tabellen gemaakt voor elke nieuwe site. De structuur hiervan is vergelijkbaar met een installatie op een enkele site zolang u eraan herinnert dat de twee tabellen met gegevens over gebruikers niet voor elke site worden gedupliceerd.