Gabriele AzzalinGabriele AzzalinPrenota una chiamataPrenota

Blog · WordPress

Come è organizzato il database di WordPress e WooCommerce?

29 giu 2025 · 5 min di lettura

Illustrazione del database di WordPress e WooCommerce

Da sviluppatore so bene quanto il database sia il cuore di un sito. Va oltre la tabella dei post: WordPress e WooCommerce hanno un ecosistema di tabelle e metadati. Qui lo percorro in cinque tappe.

1. Perché ti interessa davvero

Conoscere dove stanno i dati serve a fare query mirate, a capire un ordine duplicato, a migrare solo il necessario e a non toccare configurazioni a caso.

2. Il cuore di WordPress: le 12 tabelle

Un’installazione standard prevede 12 tabelle di base. Plugin e multisite ne aggiungono altre.

  • wp_posts — post, pagine, allegati, menu, revisioni
  • wp_postmeta — metadati chiave/valore collegati ai contenuti
  • wp_options — impostazioni del sito e dei plugin
  • wp_users e wp_usermeta — utenti e dati collegati
  • wp_terms, wp_term_taxonomy, wp_term_relationships — categorie e tag
  • wp_comments e wp_commentmeta — commenti
  • wp_links è deprecata; wp_termmeta compare in alcune versioni

In pratica wp_posts è il foglio centrale. I meta sono fogli aggiuntivi, in stile chiave/valore, per tutto ciò che non entra nella riga principale.

3. WooCommerce: un upgrade strutturale

WooCommerce riusa le tabelle di WordPress (post_type = product o shop_order) e ne aggiunge di proprie:

  • woocommerce_sessions
  • woocommerce_api_keys
  • woocommerce_order_items e woocommerce_order_itemmeta
  • woocommerce_tax_rates e woocommerce_tax_rate_locations
  • woocommerce_shipping_zones, woocommerce_shipping_zone_locations, woocommerce_shipping_zone_methods
  • woocommerce_payment_tokens e woocommerce_payment_tokenmeta
  • woocommerce_log
  • actionscheduler_* per le azioni pianificate

I prodotti sono post con post_type = product. Prezzo, SKU, stock e vendite stanno in wp_postmeta: _price, _regular_price, _sku, total_sales.

4. Relazioni utili sul campo

  1. Prodotto e variazioni. Le variazioni sono post figli (product_variation). Prezzi, SKU e stock stanno nei postmeta. Servono per filtri e viste delle varianti.
  2. Prodotto e attributi. Taglie, colori e brand vivono nelle tabelle delle tassonomie. È la base dei filtri in vetrina.
  3. Ordine e prodotti. Ogni ordine ha righe in woocommerce_order_items. Da lì si costruiscono report per SKU o categoria.
  4. Ordine e cliente. L’ordine può essere dell’utente registrato oppure collegato via _billing_email e _customer_user.
  5. Sessione e carrello. woocommerce_sessions conserva il carrello anche senza login. È il punto di partenza per i carrelli abbandonati.
  6. Coupon e ordini. I coupon sono shop_coupon e l’uso è tracciato nei meta dell’ordine.
  7. Action Scheduler. Email, rinnovi e sync ritardati stanno in wp_actionscheduler_*.
  8. Utente e preferenze. Ruoli e dati custom stanno in wp_users e wp_usermeta.
  9. Impostazioni globali. Moneta, tasse ed email stanno in wp_options.
  10. Stock. Il campo _stock sta nei metadati del prodotto o della variazione.
  11. Pagamento e spedizione. I metodi scelti stanno in _payment_method e _shipping_method.

5. A cosa serve saperlo

  • Query più corte e performance più prevedibili
  • Debug di ordini, coupon e azioni pianificate
  • Migrazioni in cui copi solo prodotti e ordini
  • Pulizia di contenuti orfani e di opzioni rimaste da plugin dismessi