Förstå och arbeta med data i WordPress

En WordPress-webbplats består av tre huvuddelar:

  1. WordPress-installationen själv
  2. Innehållet i wp-innehåll katalog som innehåller teman, plugins och uppladdningar
  3. Databasen, där allt innehåll är lagrat.

De flesta WordPress-användare kommer aldrig i direkt kontakt med databasen och kan inte ens vara medvetna om att det hela tiden arbetar för att fylla sin webbplats. När WordPress serverar någon form av sida, det vill säga att hemsidan, ett enda inlägg eller en sida eller ett arkiv, går åt databasen för att hämta innehåll som redaktörer och administratörer har lagt till på webbplatsen.

I denna serie av handledning ser jag i detalj på olika aspekter av WordPress-databasen. Serien kommer att ha nio delar, som omfattar följande:

  1. Introduktion
  2. Förhållanden mellan data
  3. Innehållstyper
  4. Användardata
  5. metadata
  6. Taxonomier, kategorier, taggar och villkor
  7. Taxonomier vs post metadata
  8. Alternativstabellen
  9. WordPress Multisite data

I den här introduktionen ger jag en översikt över databastabellerna och hur de relaterar till innehållstyperna du kan använda för att arbeta med i WordPress och identifiera vad som lagras där.

Innehållstyper i WordPress

Eftersom databas tabeller används för att lagra innehåll, innan du kan förstå dem behöver du förstå innehållet. Det finns flera typer av innehåll i WordPress:

  • inlägg
  • sidor
  • anpassade posttyper
  • bilagor
  • länkar
  • navigationsmenyalternativ (som lagras som enskilda inlägg)

Dessa innehållstyper har då data bifogade dem:

  • kategorier
  • taggar
  • anpassade taxonomier och villkor
  • posta metadata

Utöver dessa finns det andra typer av innehåll som lagras olika:

  • widgetar
  • alternativ
  • användare
  • webbplatser (för en multisite-installation)
  • hårdkodad innehåll (läggs till i ditt tema eller plugin)
  • innehåll som kommer från någon annanstans (tredje parts innehåll som nås via flöden, streaming eller annan teknik)

Alla dessa typer av innehåll lagras någonstans i databasen (eller ibland i teman eller plugin-filer som jag visar). De kan ha egna inlägg, eller de kan vara en del av en annan post (till exempel strömmade innehåll kodade till ett inlägg). De kan också kopplas till data i andra tabeller. Till exempel kommer data om inlägg att kopplas till data om användare så att WordPress vet vem som skrev vilka inlägg.

WordPress Database Structure

WordPress använder en rad databas tabeller med relationer mellan dem för att minimera mängden data som måste lagras - det här skapar ett till många relationer. Det betyder att en användare kan ha många inlägg som de författat i samband med deras användarrekord. Det sparar utrymme - om WordPress lagrade alla användardata för varje användare mot varje post som de skapade, skulle det innebära många upprepade data och mycket utrymme.

Diagrammet nedan är hämtat från WordPress codex och visar databastabellerna och hur de är länkade:

De flesta av tabellerna är kopplade till en eller flera andra tabeller via ett fält. Detta fält kommer att vara en unik identifierare för varje post, t.ex. post_id. Detta visas mer i detalj i den här tabellen:

Tabell Data lagrad Länkad till
wp_posts Inlägg, sidor, bilagor, revisioner och navigeringsmenyalternativ wp_postmeta (via post_id)
wp_term_relationships(via post_id)
wp_postmeta Metadata för varje inlägg wp_posts (via post_id)
wp_comments kommentarer wp_posts (via post_id)
wp_commentmeta Metadata för varje kommentar wp_comments (via comment_id)
wp_term_relationships Förhållanden mellan inlägg och taxonomier wp_posts (via post_id)
wp_term_taxonomy (via term_taxonomy_id)
wp_term_taxonomy Taxonomier (inklusive kategorier och taggar) wp_term_relationships (via term_taxonomy_id)
wp_terms Dina kategorier och taggar och de villkor som tilldelats anpassade taxonomier wp_term_taxonomy (via term_id)
wp_links Länkarna i din bloggroll (om du fortfarande har en) wp_term_relationships (via LINK_ID)
wp_users användare wp_posts (via post_author)
wp_user_meta Metadata för varje användare wp_users (via användar ID)
wp_options Webbplatsinställningar och alternativ (inställda via inställningsskärmen och via plugin och teman) n / a

Några saker är värda att notera:

  • Databas tabeller har wp_ prefix som standard. Du kan ändra detta när du konfigurerar din webbplats men det finns inte mycket värde för det.
  • Kärnbordet är wp_posts bord där de flesta av dina data kommer att lagras. Detta håller (nästan) allt annat tillsammans.
  • Endast ett bord är inte kopplat till någon annan - den wp_options tabell. I tabellerna lagras data om webbplatsen och WordPress-installationen, som inte är relaterad till data om inlägg eller användare.
  • Två tabeller används för att lagra data om taxonomier - dessa kommer att förklaras mer detaljerat senare i denna serie.
  • De wp_users och wp_comments Tabellerna är inte länkade - även om det är möjligt att ange att användarna måste registreras för att kommentera, lagras inte WordPress faktiskt data om kommentarer mot varje användare som har lagt upp dem. 
  • En multisite-installation kommer att ha några extra tabeller. Jag har inte inkluderat de här som det ligger utanför ramen för denna handledning.

Länkar innehåll till databastabeller

Efter att ha tittat på innehållstyperna i WordPress och databas tabellerna som används för att lagra dem, kan det vara till hjälp att matcha de två uppåt. Tabellen nedan visar vilken databastabell som används för att lagra varje typ av innehåll.

Innehållstyp Tabell (er)
inlägg wp_posts
sidor wp_posts
anpassade posttyper wp_posts
bilagor wp_posts
länkar wp_links
navigeringsmenyobjekt wp_posts
kategorier wp_terms
taggar wp_terms
anpassade taxonomier wp_term_taxonomy
taxonomi villkor wp_terms
posta metadata wp_post_meta
widgetar wp_options
alternativ wp_options
användare wp_users
hårdkodad innehåll wp_posts (om det läggs till inlägg)
wp_options (om den läggs till i widgets)
Tema- och pluginfiler (om det är hårdkodat)
tredje parts innehåll wp_posts (om det läggs till inlägg)
wp_options (om det läggs till via widgets eller plugins)
Tema- och pluginfiler (om det är hårdkodat)

Du kanske har märkt att inte alla databas tabeller ingår i den tabellen. Det beror på att vissa av dem används för att lagra metadata och andra används för att lagra relationer, vilka båda kommer att beskrivas mer i detalj senare i denna serie.

Sammanfattning

Förhoppningsvis har du nu en bättre förståelse för hur och där WordPress lagrar olika typer av data med hjälp av databasstrukturen. Denna serie kommer att se mer på alla aspekter av detta. 

I nästa del ska jag granska relationer mellan data och titta mer i detalj på hur specifika tabeller är länkade och hur vissa används endast för att lagra data om relationer.