Comprendere e lavorare con i dati in WordPress - Multisito

Nelle parti precedenti di questa serie, abbiamo lavorato attraverso le diverse tabelle nel database di WordPress e abbiamo esaminato i dati che memorizzavano, come interagivano tra loro e quali funzioni si utilizzano per interagire con loro.

In questa parte finale, passerò a guardare Multisite. Il database per un'installazione multisito di WordPress conterrà tabelle aggiuntive: un insieme di tabelle per ogni sito in esecuzione sulla rete e alcune tabelle aggiuntive per la rete stessa, nonché le tabelle per il sito principale. 

Questo significa che ci sono tre elementi per capire come funziona il database in Multisite:

  • Tabelle del database per il sito principale
  • Tabelle del database per la rete
  • Tabelle del database per ogni sito aggiuntivo.

Inizierò osservando come WordPress memorizza i dati per il sito principale.

Tabelle del database per il sito principale in multisito

Per il sito principale in una rete, WordPress utilizza le stesse 11 tabelle del database di una singola installazione del sito:

  • wp_posts
  • wp_postmeta
  • wp_comments
  • wp_commentmeta
  • wp_users
  • wp_usermeta
  • wp_links
  • wp_term_relationships
  • wp_term_taxonomy
  • wp_terms
  • wp_options

Questi conterranno dati relativi al sito principale. Due di loro conterranno anche dati relativi al resto della rete. Questi sono:

  • wp_users
  • wp_usermeta

Le altre nove tabelle funzionano nello stesso modo in cui operano per un singolo sito: memorizzano i dati sul contenuto del sito principale. Tuttavia, queste ultime due tabelle memorizzeranno anche i dati utente rilevanti per l'intera rete, nonché i dati utente che vengono utilizzati solo dal sito principale. Lo esaminerò tra un momento.

Tabelle del database per la rete

Oltre a memorizzare i dati dell'utente per l'intera rete in due delle tabelle principali, WordPress crea anche tabelle aggiuntive in un'installazione multisito che contiene dati relativi alla rete e ai suoi siti. 

Questi sono:

  • wp_blogs
  • wp_blog_versions
  • wp_registration_log
  • wp_signups
  • wp_site
  • wp_sitemeta
  • wp_sitecategories (opzionale)

WordPress utilizza queste sette (o sei) tabelle più le due tabelle utente per memorizzare tutti i dati sulla rete Multisito. Ecco cosa memorizza ognuno di loro:

tavolo Dati Gli appunti
wp_blogs Questo campo memorizza i dettagli di ogni sito nella rete, quindi ha solo un record per ciascun sito. I campi includono blog_id, dominio, registrato (i dati su cui è stato creato il sito) e ultimo aggiornamento (di nuovo, una data).
wp_blog_versions La versione corrente del database per ciascun sito, aggiornata quando si aggiorna la rete. Tre campi: blog_id, db_version e ultimo aggiornamento
wp_registration_log L'utente amministratore creato quando ogni sito è registrato Per ogni sito (identificato da blog_id), la tabella memorizza il ID utente per l'amministratore, il loro indirizzo email e la data di registrazione.
wp_signups Memorizza i dati su siti che sono stati registrati ma non attivati I campi includono un unico signup_id per ogni record, il dominio registrato, il titolo, il login utente e l'indirizzo email. Una volta attivato un sito, questo record viene eliminato e viene creato un record wp_blogs.
wp_site Memorizza l'URL per il sito principale Questa tabella ha un solo record con tre campi: l'id del sito principale (che sarà 1), il suo dominio e il percorso (normalmente /)
wp_sitemeta Memorizza i metadati per la rete Questa tabella è l'equivalente di wp_options per l'intera rete. Contiene tutti i metadati relativi alle impostazioni di rete più piccole quantità di metadati per i singoli siti. Ha quattro campi: un unico meta_id, site_id (che collega a wp_blogs), meta_key e meta_value.
wp_sitecategories Tabella opzionale creata solo se i termini globali sono abilitati per un sito. L'abilitazione dei termini globali consente di utilizzare termini su più siti nella rete. La tabella (se è stata creata), avrà quattro campi: cat_id, CAT_NAME, category_nicename e ultimo aggiornamento. Nota che questa tabella memorizza i termini, non solo le categorie, nonostante i nomi dei campi.
wp_users I dati su tutti gli utenti sono archiviati qui piuttosto che per ogni sito, poiché i singoli utenti possono avere accesso a più siti sulla rete. In un'installazione multista, WordPress crea due campi aggiuntivi in wp_users tabella: spam e cancellati, entrambi i valori booleani sono predefiniti NO.
wp_usermeta Il wp_usermeta tabelle memorizza tutti i metadati per tutti gli utenti del sito La tabella viene utilizzata nello stesso modo di una singola installazione del sito.

Relazioni tra le tabelle

La maggior parte di queste tabelle è correlata al wp_blogs tavolo tramite il blog_ID campo, poiché tutti i dati necessari per i siti nella rete dovranno essere collegati al record del sito principale. Le eccezioni sono:

  • wp_sitecategories, che collega a post e altri contenuti
  • wp_signups, poiché questi non sono ancora registrati
  • wp_usermeta, che ha un link indiretto a wp_blogs attraverso wp_users

Per maggiori dettagli su ciascuna di queste tabelle e i loro campi, vedere la pagina Codex sul database.

Tabelle del database per i siti in una rete

Il modo in cui WordPress memorizza i dati per ciascuno dei siti nella rete è abbastanza semplice: crea più copie di ciascuna delle tabelle del database, una per ogni sito. Tuttavia non crea copie aggiuntive di wp_users e wp_usermeta poiché questi sono tutti memorizzati nella tabella principale.

Per distinguere tra le tabelle per ogni sito, WordPress aggiunge l'ID del sito al nome della tabella, quindi ad esempio per il sito 2, wp_posts diventa wp_2_posts.

Ogni sito avrà le seguenti tabelle:

  • 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

Il xx sopra sarà sostituito dall'ID numerico del sito. Tutte queste tabelle memorizzano i dati nello stesso modo per ogni sito come farebbero se il sito fosse una singola installazione del sito.

Sommario

Se stai manipolando, recuperando o spostando i dati da un'installazione Multisite di WordPress, è importante capire in che modo Multisite archivia i dati in modo diverso da un'installazione multisito. 

Come ho mostrato, ci sono tre elementi principali: le tabelle utilizzate per il sito principale; tabelle utilizzate per archiviare il database sulla rete nel suo complesso; e tabelle create per ogni nuovo sito. La struttura di questi è simile all'installazione di un singolo sito purché si ricordi che le due tabelle che memorizzano i dati sugli utenti non sono duplicate per ogni sito.