Per chi come me usa WordPress per gestire il proprio blog ed ha la passione di modificarlo e crearsi plugin per adattarlo al meglio alle proprie esigenze, tra gli appunti non può mancare di certo l’elenco delle tabelle che costituiscono il database di WordPress.
Anche se WordPress è in grado di gestire tutto il lavoro di lettura e scrittura dei dati dei nostri blog (articoli, commenti, pagine, menu, tag, ecc) nel database, ci può tornare utile sapere dove questi sono memorizzati per poterli poi recuperare, magari per utilizzarli nel nuovo plugin o tema che stiamo costruendo. Per interagire con il database di wordpress, vi consiglio sempre di usare le API di WordPress, così eviterete, per chi ha un sito già avviato, di compromettere i dati presenti all’interno del database quali articoli, commenti ecc.
I nomi delle tabelle che andrò ad elencare di seguito, per semplificare, faranno riferimento ad una installazione standard di WordPress ed avranno il suffisso predefinito ‘wp_’ che come consigliato per motivi di sicurezza andrebbe cambiato in fase di installazione.
Le Tabelle del database di wordpress
- wp_posts
- wp_postmeta
- wp_comments
- wp_commentmeta
- wp_terms
- wp_term_taxonomy
- wp_term_relationships
- wp_users
- wp_usermeta
- wp_options
- wp_links
wp_posts
La tabella wp_posts, è la tabella principale del database di wordpress. Il suo nome può trarre in inganno, perché si è portati a pensare che contenga esclusivamente gli articolo del blog e invece qui troviamo memorizzati diversi tipi di contenuti quali post, pagine, voci di menu, allegati multimediali ecc. Per riconoscere il tipo di contenuto memorizzato in ogni record della tabella, bisogna fare riferimento al campo ‘post_type’ dove c’è l’indicazione della tipologia di contenuto (post, pagina, allegato, voce di menù o altro). Per semplificare, nell’elenco dei campi che trovate di seguito, scriverò ‘post’ ma farò riferimento ai vari contenuti sopra elencati
Ecco i campi presenti e quindi i dati reperibili nella tabella wp_posts:
- ID – numero univoco assegnato ogni post.
- post_author – l’ID dell’utente che ha creato il post. (Fa riferimento alla tabella wp_users.)
- post_date – data e ora di creazione.
- post_date_gmt – data e ora GMT (Greenwich Mean Time – Tempo del meridiano di Greenwich) di creazione. La data e l’ora sono memorizzati col riferimento GMT per essere indipendenti dal fuso orario dell’autore.
- post_content– contiene il testo completo del post
- post_title – titolo del post.
- post_excerpt – introduzione personalizzata oppure riassunto del post.
- post_status – stato del post, ad esempio ‘Bozza’, ‘In attesa di revisione’, ‘Pubblicato’, ‘Post privato’, ecc.
- comment_status – flag che indica la possibilità di commentare o meno il post.
- ping_status – flag che indica se il post accetta ping e riferimenti.
- post_password – password opzionale per autorizzare la visualizzazione del post nel caso in cui la visibilità (post_status) è stata impostata su ‘protetto da password’.
- post_name – URL friendly del post, ricavato dal titolo.
- to_ping – lista di URL dove WordPress cerca di inviare pingbacks dopo l’aggiornamento.
- pinged – lista degli URL dove WordPress ha inviato pingbacks.
- post_modified – ora e data dell’ultima modifica.
- post_modified_gmt – ora GMT e data dell’ultima modifica.
- post_content_filtered – può essere utilizzato dai plugin per memorizzare dei dati relativi al post utili alle funzioni del plugin stesso (ad esempio una versione di POST_CONTENT, ecc).
- post_parent – contiene l’ID di altro post (ad esempio le immagini incluse nell’articolo) mettendoli in relazione.
- guid – Global Unique Identifier, l’URL reale del post (non in versione permalink).
- menu_order – contiene un numero per ordinare i contenuti di tipo pagina o di altri tipi non-post.
- post_type – tipo di contenuto (post, pagina, allegato, voce di menù o altro).
- post_mime_type – specifica il tipo MIME del file allegato (per esempio “image/jpeg”).
- comment_count – il numero totale di commenti, pingbacks e riferimenti al post.
wp_postmeta
La tabella wp_postmeta, contiene informazioni aggiuntive riguardanti i contenuti (post, pagine, commenti, ecc). Questa tabella, è praticamente una estensione della tabella wp_posts, infatti, con la sua struttura chiave/valore permette a plugin, temi, ecc di aggiungere campi personalizzati e illimitati ai nostri post.
- meta_id – numero univoco assegnato a ciascuna riga della tabella.
- post_id – l’ID del post a cui si riferiscono i dati (fa riferimento alla tabella wp_posts)
- meta_key – contiene il nome (la chiave) del dato memorizzato.
- meta_value – contiene il valore.
wp_comments
Nella tabella wp_comments, sono memorizzati tutti i dati relativi ai commenti dei post che permettono le discussioni.
- comment_ID – numero univoco assegnato ad ogni commento.
- comment_post_ID – ID del post al quale questo commento si riferisce. (fa riferimento alla tabella wp_posts.)
- comment_author – Nome dell’autore del commento.
- comment_author_email – E-mail dell’autore del commento.
- comment_author_url – URL dell’autore del commento.
- comment_author_IP – Indirizzo IP dell’autore del commento.
- comment_date – Data e ora in cui il commento è stato pubblicato.
- comment_date_gmt – Data e ora GMT in cui il commento è stato pubblicato.
- comment_content – Testo del commento.
- comment_karma – Non utilizzato direttamente da WordPress ma può essere utile per eventuali plugin.
- comment_approved – Indica se il commento è stato approvato o meno.
- comment_agent – Dati del browser, sistema operativo, ecc utilizzati dall’utente che ha postato il commento.
- comment_type – Tipo di commento: commento, trackback o pingback.
- comment_parent – Nel caso questo commento fosse una risposta ad un altro commento, in questo campo troveremo l’ID di quest’ultimo.
- user_id – L’Id dell’utente nel caso l’autore del commento fosse registrato al sito. (fa riferimento alla tabella wp_users).
wp_commentmeta
Come per la tabella wp_postmeta, wp_commentmeta contiene informazioni aggiuntive per i commenti.
- meta_id – numero univoco assegnato a ciascuna riga della tabella.
- comment_id– l’ID del commento a cui si riferisce il dato (fa riferimento alla tabella wp_comments)
- meta_key – contiene il nome (la chiave) del dato memorizzato.
- meta_value – contiene il valore.
wp_terms
WordPress ha un potente sistema di tassonomia che permette di organizzare i contenuti. Gli elementi di tassonomia individuali sono chiamati terms e sono memorizzati in questa tabella. Per capirci meglio: categorie e tag sono tassonomie, mentre ogni singola categoria o tag al loro interno è un ‘term’. Faccio un esempio per rendere tutto più chiaro… Questo articolo è nella categoria ‘vita da blogger‘ ed ha come tag ‘wordpress‘, ‘database‘, ‘mysql‘. Bene, nella tabella wp_terms verranno memorizzati i termini vita da blogger, wordpress, database e mysql.
- term_id – numero univoco assegnato ad ogni termine.
- name– il nome del termine.
- slug – l’URL friendly al termine.
- term_group – campo utile a temi o plugin per eventuali personalizzazioni. Non utilizzato dal core di WordPress.
wp_term_taxonomy
Continuando con l’esempio fatto in precedenza per la tabella wp_terms, i termini vita da blogger, wordpress, database e mysql sono memorizzati in wp_terms senza considerare la loro appartenenze ad uno specifico insieme (‘categorie’, ‘tags’, ecc). Nella tabella wp_term_taxonomy quindi c’è l’associazione che permette di capire per ogni termine a quale insieme(tassonomia) appartiene.
La struttura di questa tabella consente di associare lo stesso termine a diverse tassonomie. Per esempio ‘database’ potrebbe essere sia una categoria che un tag quindi il termine database sarebbe presente una volta in wp_terms e in due righe in wp_term_taxonomy, una per ogni ogni tassonomia.
- term_taxonomy_id – numero univoco assegnato a ciascuna riga della tabella.
- term_id – l’ID del termine. (fa riferimento alla tabella wp_terms)
- taxonomy – lo slug della tassonomia.
- description – descrizione del termine appartenente a questa tassonomia.
- parent– ID di un termine genitore. Usato per tassonomie gerarchiche come le categorie.
- count – il numero dei termini associati a questa tassonomia.
wp_term_relationships
Finora abbiamo visto come i termini e le tassonomie sono memorizzati nel database, ma non abbiamo ancora visto come WordPress utilizza questi dati assegnandoli ad esempio ai post. La tebella wp_term_relationships, serve proprio a questo, cioè a creare le associazioni tra gli oggetti presenti nella tabella wp_posts e i termini presenti nella tabella wp_term_taxonomy.
- object_id – l’ID del post a cui è associato il termne. (fa riferimento alla tabella wp_posts).
- term_taxonomy_id – l’ID della coppia termine / tassonomia associata. (fa riferimento alla tabella wp_term_taxonomy).
- term_order – consente l’ordinamento dei termini di un oggetto.
wp_users
Come facilmente intuibile, nella tabella wp_users troviamo tutte le informazioni degli utenti registrati al sito.
- ID – numero univoco assegnato ad ogni utente.
- user_login – nome utente utilizzato per il login.
- user_pass – hash della password dell’utente.
- user_nicename nome utente, può essere un nome reale, oppure un nikname.
- user_email – indirizzo e-mail dell’utente.
- user_url – URL dell’utente, ad esempio, indirizzo del sito web.
- user_registered – ora e data in cui l’utente si è registrato.
- user_activation_key – utilizzato per la reimpostazione la password.
- user_status – è stato utilizzato in Multisito pre WordPress 3.0 per indicare un utente di spam.
- display_name – nome che l’utente desidera venga usato pubblicamente sul sito, può essere user_login, user_nicename, nome e cognome definito in wp_usermeta.
wp_usermeta
Questa tabella come le altre ‘meta’ (wp_postmeta, wp_commentmeta), contiene informazioni aggiuntive relative agli utenti registrati. Le informazioni che si trovano nel profilo utente in bacheca e non presenti nella tabella wp_users sono memorizzate qui.
- umeta_id – numero univo assegnato a ogni riga della tabella.
- user_id – ID del relativo utente. (fa riferimento alla tabella wp_users)
- meta_key – nome del dato memorizzato (chiave).
- meta_value – valore del dato.
wp_options
Nella tabella wp_options sono memorizzate tutte le impostazioni del sito web, inclusi i dati sul tema, plugin attivi, widget, dati memorizzati nella cache temporanei. In questa tabella vengono conservate anche eventuali impostazioni di plugin e temi.
Anche questa tabella utilizza lo schema chiave/valore per consentire di memorizzare un numero indefinito di dati e di qualsiasi tipo.
- option_id – numero univoco assegnato a ciascuna riga della tabella.
- option_name – una chiave di identificazione il dato memorizzato.
- option_value – valore del dato.
- autoload – indica se l’opzione deve essere caricata automaticamente con la funzione wp_load_alloptions()
wp_links
Oggi i blogroll vengono utilizzati sempre meno e WordPress dalla versione 3.5 ha rimosso la gestione dei link dall’interfaccia di amministrazione. La tabella wp_links dedicata appunto ai link è rimasta ancora nel database per mantenere la compatibilità con le versioni precedenti di WordPress. Per chi ha necessità di gestire i link, può sempre farlo utilizzando questo plug-in .
- link_id – numero univoco assegnato a ciascuna riga della tabella.
- link_url – URL del link.
- link_name – nome del link.
- link_image – URL di un’immagine relativa al link.
- link_target – il frame di destinazione per il link, ad esempio, _blank, _top, _none.
- link_description – descrizione del link.
- link_visible – visibilità del link: pubblico o privato.
- link_owner – ID dell’utente che ha creato il collegamento. (fa riferimento alla tabella wp_users)
- link_rating – un valore compreso tra 0-10 per il rating del link.
- link_updated – ora e data di inserimento/aggiornamento.
- link_rel – relationship del link.
- link_notes – Note sul collegamento.
- link_rss – indirizzo RSS.
Vi allego di seguito uno schema che spiegare bene le relazioni tra tutte le tabelle del database di wordpress (potete trovarlo anche qui: Codex di WordPress).
Spero che questo articolo vi sia utile e come al solito vi invito a lasciare nei commenti tutte le domande i suggerimenti e le osservazioni che vi vengono in mente… mi aiuteranno a rendere questo post il più dettagliato possibile!
Non mi aspettavo di trovare l’informazione che cercavo su un sito così di nicchia. Pensavo si parlasse di mamma e gravidanza, ma non solo! infatti anche i Papà possono trovare informazioni utili per arricchire il proprio sito web. Oppure, come in questo caso le info sui database. Grazie!
Ciao Francesco, non e’un caso che mi chiamo Mammachebrava!!! 🙂
Sono contenta che hai trovato l’informazione che cercavi.
A presto!