In WordPress begrijpen en werken met gegevens

Een WordPress-website bestaat uit drie hoofdelementen:

  1. De WordPress-installatie zelf
  2. De inhoud van de wp-content map met de thema's, plug-ins en uploads
  3. De database, waar alle inhoud is opgeslagen.

De meeste WordPress-gebruikers komen nooit rechtstreeks in contact met de database en zijn zich er misschien niet eens van bewust dat ze voortdurend bezig zijn om hun site te vullen. Wanneer WordPress elke soort pagina oproept, is dat de startpagina, een enkele post of pagina of een archief, het gebruikt de database om inhoud te tonen die door redacteurs en beheerders aan de site is toegevoegd.

In deze reeks tutorials zal ik in detail kijken naar verschillende aspecten van de WordPress-database. De serie bestaat uit negen delen met betrekking tot het volgende:

  1. Invoering
  2. Relaties tussen gegevens
  3. Inhoudstypen
  4. Gebruikersgegevens
  5. metadata
  6. Taxonomieën, categorieën, tags en termen
  7. Taxonomieën versus berichtmetadata
  8. De optietabel
  9. WordPress Multisite-gegevens

In deze inleiding geef ik een overzicht van de databasetabellen en hoe deze betrekking hebben op de inhoudstypen waarmee u in WordPress werkt, en identificeer wat er is opgeslagen.

Inhoudstypen in WordPress

Omdat de databasetabellen worden gebruikt om inhoud op te slaan, moet u voordat u ze kunt begrijpen, de inhoud begrijpen. Er zijn een aantal soorten inhoud in WordPress:

  • posts
  • pagina's
  • aangepaste berichttypen
  • bijlagen
  • koppelingen
  • navigatiemenu-items (die worden opgeslagen als afzonderlijke berichten)

Aan deze inhoudstypen zijn dan gegevens gekoppeld:

  • categorieën
  • labels
  • aangepaste taxonomieën en voorwaarden
  • post metadata

Naast deze zijn er andere soorten inhoud die anders worden opgeslagen:

  • widgets
  • opties
  • gebruikers
  • sites (voor een multi-site installatie)
  • hardcoded content (toegevoegd aan je thema of plug-ins)
  • inhoud afkomstig van elders (inhoud van derde partijen toegankelijk via feeds, streaming of andere technieken)

Al deze soorten inhoud worden ergens in de database opgeslagen (of af en toe in thema's of plug-inbestanden zoals ik zal laten zien). Ze kunnen een eigen vermelding hebben of ze kunnen deel uitmaken van een ander item (bijvoorbeeld gestreamde inhoud die is gecodeerd in een bericht). Ze kunnen ook worden gekoppeld aan gegevens in andere tabellen. Gegevens over berichten worden bijvoorbeeld gekoppeld aan gegevens over gebruikers, zodat WordPress weet wie welke berichten heeft geschreven.

De WordPress-databasestructuur

WordPress gebruikt een reeks databasetabellen met onderlinge relaties om de hoeveelheid gegevens die moeten worden opgeslagen te minimaliseren - dit creëert een-op-veel relaties. Dit betekent dat, bijvoorbeeld, één gebruiker veel berichten kan hebben die zij hebben geschreven in relatie tot hun gebruikersrecord. Het bespaart ruimte - als WordPress alle gebruikersgegevens voor elke gebruiker zou opslaan tegen elk bericht dat hun auteur was, zou dat veel herhaalde gegevens en veel ruimte betekenen.

Het onderstaande diagram is afkomstig uit de WordPress codex en toont de databasetabellen en hoe ze zijn gekoppeld:

De meeste tabellen zijn via één veld gekoppeld aan een of meer andere tabellen. Dit veld is een unieke ID voor elk record zoals post_id. Dit wordt meer in detail in deze tabel getoond:

Tafel Gegevens opgeslagen Gekoppeld aan
wp_posts Posts, pagina's, bijlagen, revisies en items van het navigatiemenu wp_postmeta (via post_id)
wp_term_relationships(via post_id)
wp_postmeta Metagegevens voor elk bericht wp_posts (via post_id)
wp_comments Comments wp_posts (via post_id)
wp_commentmeta Metagegevens voor elke opmerking wp_comments (via comment_id)
wp_term_relationships Relaties tussen functies en taxonomieën wp_posts (via post_id)
wp_term_taxonomy (via term_taxonomy_id)
wp_term_taxonomy Taxonomieën (inclusief categorieën en tags) wp_term_relationships (via term_taxonomy_id)
wp_terms Uw categorieën en tags en de voorwaarden die zijn toegewezen aan aangepaste taxonomieën wp_term_taxonomy (via term_id)
wp_links De links in je blogroll (als je die nog hebt) wp_term_relationships (via LINK_ID)
wp_users gebruikers wp_posts (via post_author)
wp_user_meta Metadata voor elke gebruiker wp_users (via gebruikersnaam)
wp_options Site-instellingen en opties (ingesteld via de schermen Instellingen en via plug-ins en thema's) n / a

Een paar dingen zijn vermeldenswaard:

  • Databasetabellen hebben de wp_ voorvoegsel standaard. U kunt dit wijzigen wanneer u uw site configureert, maar er is niet veel waarde aan.
  • De kerntafel is de wp_posts tabel, waar de meeste van uw gegevens worden opgeslagen. Dit houdt (bijna) al het andere bij elkaar.
  • Slechts één tabel is niet gekoppeld aan andere - de wp_options tafel. In deze tabellen worden gegevens opgeslagen over de site en de WordPress-installatie, die niet gerelateerd is aan gegevens over berichten of gebruikers.
  • Twee tabellen worden gebruikt om gegevens over taxonomieën op te slaan - deze zullen later in deze serie in meer detail worden uitgelegd.
  • De wp_users en wp_comments tabellen zijn niet gekoppeld - hoewel het mogelijk is om aan te geven dat gebruikers moeten worden geregistreerd voor commentaar, slaat WordPress feitelijk geen gegevens op over opmerkingen tegen elke gebruiker die ze heeft gepost. 
  • Een multisite-installatie heeft wat extra tabellen. Ik heb deze hier niet opgenomen, omdat dit buiten het bestek van deze zelfstudie valt.

Inhoud koppelen aan databasetabellen

Na te hebben gekeken naar de inhoudstypen in WordPress en de databasetabellen die zijn gebruikt om ze op te slaan, kan het nuttig zijn om ze met elkaar te matchen. De onderstaande tabel toont welke databasetabel wordt gebruikt om elk type inhoud op te slaan.

Inhoudstype (S)
posts wp_posts
pagina's wp_posts
aangepaste berichttypen wp_posts
bijlagen wp_posts
koppelingen wp_links
navigatiemenu-items wp_posts
categorieën wp_terms
labels wp_terms
aangepaste taxonomieën wp_term_taxonomy
taxonomie voorwaarden wp_terms
post metadata wp_post_meta
widgets wp_options
opties wp_options
gebruikers wp_users
hard gecodeerde inhoud wp_posts (indien toegevoegd aan berichten)
wp_options (indien toegevoegd aan widgets)
Thema- en plug-inbestanden (indien hard gecodeerd)
inhoud van derden wp_posts (indien toegevoegd aan berichten)
wp_options (indien toegevoegd via widgets of plug-ins)
Thema- en plug-inbestanden (indien hard gecodeerd)

U hebt misschien gemerkt dat niet alle databasetabellen in die tabel zijn opgenomen. Dat komt omdat sommige ervan worden gebruikt om metadata op te slaan en andere worden gebruikt om relaties op te slaan die beide later in deze serie gedetailleerder worden behandeld..

Samenvatting

Hopelijk heb je nu een beter begrip van hoe en waar WordPress verschillende soorten gegevens opslaat met behulp van de databasestructuur. In deze serie zullen alle aspecten hiervan in meer detail worden besproken. 

In het volgende deel zal ik relaties tussen gegevens onderzoeken en meer in detail kijken hoe specifieke tabellen zijn gekoppeld en hoe sommige puur worden gebruikt om gegevens over relaties op te slaan..