Comprensione e utilizzo dei dati in WordPress

Un sito Web WordPress è composto da tre elementi principali:

  1. L'installazione di WordPress stessa
  2. Il contenuto del wp-content directory che include temi, plugin e upload
  3. Il database, in cui è archiviato tutto il contenuto.

La maggior parte degli utenti di WordPress non entra mai in contatto diretto con il database e potrebbe anche non essere consapevole del fatto che sta lavorando costantemente per popolare il proprio sito. Quando WordPress serve qualsiasi tipo di pagina, sia che si tratti della home page, di un singolo post o di una pagina o di un archivio, sta accedendo al database per visualizzare il contenuto che gli editor e gli amministratori hanno aggiunto al sito.

In questa serie di tutorial vedrò in dettaglio i diversi aspetti del database di WordPress. La serie avrà nove parti, che coprono quanto segue:

  1. introduzione
  2. Relazioni tra i dati
  3. Tipi di contenuto
  4. Dati utente
  5. Metadati
  6. Tassonomie, categorie, tag e termini
  7. Tassonomie vs post metadati
  8. La tabella delle opzioni
  9. Dati multisite di WordPress

In questa introduzione, darò una panoramica delle tabelle del database e in che modo si relazionano ai tipi di contenuto con cui potresti essere abituato a lavorare in WordPress e identifica cosa è memorizzato dove.

Tipi di contenuto in WordPress

Poiché le tabelle del database vengono utilizzate per archiviare il contenuto, prima di poterle comprendere è necessario comprendere il contenuto. Esistono numerosi tipi di contenuti in WordPress:

  • messaggi
  • pagine
  • tipi di messaggi personalizzati
  • allegati
  • link
  • voci del menu di navigazione (che sono memorizzate come singoli messaggi)

Questi tipi di contenuto hanno quindi dati ad essi allegati:

  • categorie
  • tag
  • tassonomie e termini personalizzati
  • post metadati

Oltre a questi, ci sono altri tipi di contenuti che sono memorizzati in modo diverso:

  • widgets
  • opzioni
  • utenti
  • siti (per un'installazione multisito)
  • contenuto hardcoded (aggiunto al tuo tema o plugin)
  • contenuto proveniente da altrove (contenuto di terze parti a cui si accede tramite feed, streaming o altre tecniche)

Tutti questi tipi di contenuti sono memorizzati da qualche parte nel database (o occasionalmente in temi o file plugin come mostrerò). Possono avere una voce propria o potrebbero far parte di un'altra voce (ad esempio, contenuto in streaming codificato in un post). Possono anche essere collegati a dati in altre tabelle. Ad esempio, i dati relativi ai post saranno collegati ai dati sugli utenti in modo che WordPress sappia chi ha scritto quali post.

La struttura del database di WordPress

WordPress utilizza una serie di tabelle di database con relazioni tra di esse per ridurre al minimo la quantità di dati che devono essere memorizzati - questo crea relazioni uno-a-molti. Ciò significa che, ad esempio, un utente può avere molti post che è stato creato in relazione al proprio record utente. Risparmia spazio - se WordPress memorizza tutti i dati dell'utente per ciascun utente rispetto a ogni post di loro creazione, ciò significherebbe un sacco di dati ripetuti e molto spazio.

Lo schema seguente è tratto dal codice WordPress e mostra le tabelle del database e il modo in cui sono collegate:

La maggior parte delle tabelle è collegata a una o più tabelle tramite un campo. Questo campo sarà un identificatore univoco per ogni record come post_id. Questo è mostrato in maggior dettaglio in questa tabella:

tavolo Dati memorizzati Collegato a
wp_posts Post, pagine, allegati, revisioni e voci del menu di navigazione wp_postmeta (attraverso post_id)
wp_term_relationships(attraverso post_id)
wp_postmeta Metadati per ogni post wp_posts (attraverso post_id)
wp_comments Commenti wp_posts (attraverso post_id)
wp_commentmeta Metadati per ogni commento wp_comments (attraverso COMMENT_ID)
wp_term_relationships Rapporti tra posti e tassonomie wp_posts (attraverso post_id)
wp_term_taxonomy (attraverso term_taxonomy_id)
wp_term_taxonomy Tassonomie (comprese categorie e tag) wp_term_relationships (attraverso term_taxonomy_id)
wp_terms Le tue categorie e tag e i termini assegnati alle tassonomie personalizzate wp_term_taxonomy (attraverso term_id)
wp_links I link nel tuo blogroll (se ne hai ancora uno) wp_term_relationships (attraverso link_id)
wp_users utenti wp_posts (attraverso post_author)
wp_user_meta Metadati per ciascun utente wp_users (attraverso ID utente)
wp_options Impostazioni e opzioni del sito (impostate tramite le schermate Impostazioni e tramite plugin e temi) n / A

Vale la pena notare alcune cose:

  • Le tabelle del database hanno il wp_ prefisso di default. Puoi cambiare questo quando configuri il tuo sito ma non ha molto valore.
  • Il tavolo principale è il wp_posts tabella, dove verrà archiviata la maggior parte dei tuoi dati. Ciò mantiene (quasi) tutto il resto insieme.
  • Solo un tavolo non è collegato a nessun altro - il wp_options tavolo. Questa tabella memorizza i dati sul sito e l'installazione di WordPress, che non è correlata ai dati relativi a post o utenti.
  • Due tabelle sono utilizzate per memorizzare i dati relativi alle tassonomie, che verranno illustrate in dettaglio più avanti in questa serie.
  • Il wp_users e wp_comments le tabelle non sono collegate - sebbene sia possibile specificare che gli utenti debbano essere registrati per commentare, WordPress non memorizza i dati sui commenti nei confronti di ciascun utente che li ha pubblicati. 
  • Un'installazione multisito prevede alcune tabelle aggiuntive. Non ho incluso quelli qui perché questo non rientra negli scopi di questo tutorial.

Collegamento del contenuto alle tabelle del database

Dopo aver esaminato i tipi di contenuto in WordPress e le tabelle del database utilizzate per memorizzarli, può essere utile abbinare i due. La tabella seguente mostra quale tabella di database viene utilizzata per memorizzare ogni tipo di contenuto.

Tipo di contenuto Table (s)
messaggi wp_posts
pagine wp_posts
tipi di messaggi personalizzati wp_posts
allegati wp_posts
link wp_links
voci del menu di navigazione wp_posts
categorie wp_terms
tag wp_terms
tassonomie personalizzate wp_term_taxonomy
termini di tassonomia wp_terms
post metadati wp_post_meta
widgets wp_options
opzioni wp_options
utenti wp_users
contenuto hardcoded wp_posts (se aggiunto ai post)
wp_options (se aggiunto ai widget)
File tematici e plug-in (se codificati)
contenuto di terze parti wp_posts (se aggiunto ai post)
wp_options (se aggiunto tramite widget o plug-in)
File tematici e plug-in (se codificati)

Potresti aver notato che non tutte le tabelle del database sono incluse in quella tabella. Questo perché alcuni di questi sono usati per memorizzare i metadati e altri sono usati per memorizzare le relazioni, che saranno trattate più in dettaglio più avanti in questa serie.

Sommario

Si spera che ora abbia una migliore comprensione di come e dove WordPress memorizza diversi tipi di dati utilizzando la struttura del database. Questa serie esaminerà tutti gli aspetti di questo in modo più dettagliato. 

Nella parte successiva, esaminerò le relazioni tra i dati e analizzerò in dettaglio il modo in cui le tabelle specifiche sono collegate e in che modo alcuni vengono utilizzate esclusivamente per archiviare dati sulle relazioni.