
In breve: WooCommerce memorizza tutti i prodotti come custom post type in
wp_posts, con attributi e metadati (prezzo, SKU, scorte) inwp_postmeta. Categorie, tag e attributi di prodotto si trovano nella famiglia di tabellewp_terms. I flag di visibilità e di tipo di prodotto vengono memorizzati come chiavi di post meta.
A volte aggiungi nuovi prodotti WooCommerce sul tuo sito di staging e vuoi semplicemente trasferire questi nuovi prodotti al sito live senza intaccare altri dati come ordini e transazioni. Sapere quali tabelle del database usa WooCommerce rende questo trasferimento sicuro e prevedibile: copi solo le righe che contengono i dati dei prodotti e lasci intatte le righe degli ordini.
Questo articolo mappa ogni tabella che contiene i dati dei prodotti WooCommerce, spiega le colonne che contano nell’uso quotidiano e include SQL pronto da copiare per le query più comuni. Se ti sei mai chiesto perché una modifica di prodotto su staging non è stata riportata dopo un push parziale, la risposta è quasi sempre una tabella dimenticata.
Perché è importante sapere dove vengono memorizzati i prodotti
Capire dove sono memorizzati i prodotti WooCommerce è utile in diverse situazioni pratiche:
- Query personalizzate: Recuperare dati dei prodotti tramite query SQL per report o funzionalità personalizzate.
- Ottimizzazione del database: Ripulire dati non necessari per migliorare le prestazioni.
- Risoluzione dei problemi: Risolvere problemi con dettagli di prodotto mancanti o errati.
- Migrazione dei dati: Spostare prodotti tra diverse installazioni di WordPress senza toccare i dati di ordini o clienti.
- Debug degli attributi mancanti: Quando il colore o la taglia di un prodotto non compare nel front-end, sapere quale tabella di tassonomia ispezionare fa risparmiare molto tempo di debug.
Tabelle chiave che memorizzano i dati dei prodotti WooCommerce
WooCommerce memorizza i dati dei prodotti principalmente in due tabelle:
wp_posts– Contiene le voci dei prodotti con post typeproductoproduct_variation.

wp_postmeta– Memorizza i metadati aggiuntivi per ogni prodotto, collegati tramitepost_id(ID prodotto).

Panoramica delle tabelle
La tabella seguente associa ogni area di archiviazione principale a ciò che contiene e alle colonne più spesso necessarie nelle query o nelle migrazioni:
| Tabella | Cosa memorizza | Colonne chiave |
|---|---|---|
wp_posts |
Ogni prodotto e variazione come una riga | ID, post_title, post_type = 'product', post_status, post_modified |
wp_postmeta |
Prezzo, SKU, scorte, peso, dimensioni — una riga per chiave e per prodotto | post_id, meta_key, meta_value |
wp_terms |
Nomi di categorie e tag, etichette degli attributi | term_id, name, slug |
wp_term_taxonomy |
Dichiara se un termine è una categoria, un tag o un attributo | term_taxonomy_id, taxonomy, description |
wp_term_relationships |
Collega ogni prodotto (object_id) ai suoi termini |
object_id, term_taxonomy_id |
wp_termmeta |
Metadati aggiuntivi associati ai termini | term_id, meta_key, meta_value |
wp_woocommerce_attribute_taxonomies |
Definizioni di attributi globali (ad es. Colore, Taglia) | attribute_id, attribute_name, attribute_type |
Esempio pratico: recuperare un prodotto con prezzo e livello di scorte
La query seguente unisce wp_posts a wp_postmeta per ottenere il prezzo e lo stato delle scorte di un singolo prodotto. Sostituisci 12345 con il valore ID del prodotto preso da wp_posts:
SELECT
p.ID,
p.post_title,
MAX(CASE WHEN pm.meta_key = '_price' THEN pm.meta_value END) AS price,
MAX(CASE WHEN pm.meta_key = '_stock_status' THEN pm.meta_value END) AS stock_status
FROM wp_posts p
JOIN wp_postmeta pm ON pm.post_id = p.ID
WHERE p.ID = 12345
AND p.post_type = 'product'
GROUP BY p.ID, p.post_title;
Nei nostri test con WooCommerce 9.x, la chiave meta _price è sempre valorizzata anche quando il prodotto non ha un prezzo scontato esplicito: rispecchia il prezzo normale. Dall’esperienza del supporto WP STAGING, la fonte di confusione più comune è l’idea che WooCommerce usi tabelle proprie e completamente separate per i prodotti. Non è così: estende wp_posts tramite il sistema dei custom post type, quindi ogni prodotto è una riga di post con un valore di post_type pari a product.
Riferimento rapido: trova ciò che ti serve
Usa questa tabella per andare direttamente alla tabella e alla colonna giuste senza leggere tutta la documentazione dello schema:
| Voglio … | Tabella | Filtro |
|---|---|---|
| Elencare tutti i prodotti | wp_posts |
post_type = 'product' |
| Trovare il prezzo di un prodotto | wp_postmeta |
meta_key = '_price' |
| Trovare il prezzo scontato di un prodotto | wp_postmeta |
meta_key = '_sale_price' |
| Verificare lo stato delle scorte | wp_postmeta |
meta_key = '_stock_status' |
| Trovare lo SKU di un prodotto | wp_postmeta |
meta_key = '_sku' |
| Elencare le categorie di un prodotto | wp_term_relationships → wp_term_taxonomy → wp_terms |
taxonomy = 'product_cat' |
| Verificare se un prodotto è in evidenza | wp_term_relationships |
slug del termine featured in product_visibility |
| Trovare tutte le variazioni di un prodotto | wp_posts |
post_type = 'product_variation' e post_parent = <ID prodotto> |
Tabelle che memorizzano categorie, tag e attributi dei prodotti
Oltre alle tabelle principali dei prodotti, WooCommerce utilizza diverse tabelle relative alle tassonomie per gestire tipi di prodotto, categorie, sottocategorie, tag e attributi:
wp_terms– Memorizza le categorie e i tag dei prodotti.wp_termmeta– Memorizza i metadati per i termini dei prodotti.wp_term_taxonomy– Definisce il tipo di tassonomia (ad es. categoria, tag, attributo).wp_term_relationships– Collega i prodotti alle loro categorie e attributi.wp_woocommerce_termmeta– Memorizza ulteriori dati dei termini specifici di WooCommerce.wp_woocommerce_attribute_taxonomies– Gestisce specificamente gli attributi dei prodotti.
Quando un attributo di prodotto non compare correttamente nel front-end, controlla sia wp_term_relationships (per confermare che il prodotto sia collegato al termine corretto) sia wp_term_taxonomy (per confermare che la colonna taxonomy corrisponda allo slug dell’attributo previsto).
Tipi di prodotto e visibilità in WooCommerce
WooCommerce gestisce diversi tipi di prodotto utilizzando la tassonomia product_type, che include le seguenti opzioni predefinite:
simple– Un prodotto standard senza variazioni.grouped– Un insieme di prodotti correlati.variable– Un prodotto con più variazioni.external– Un prodotto venduto su un sito web esterno.
Da WooCommerce 3+, una nuova tassonomia chiamata product_visibility gestisce:
- Visibilità in ricerca e catalogo – Usa termini come
exclude-from-searcheexclude-from-catalog. - Prodotti in evidenza – Identificati con il termine
featured. - Stato delle scorte – Usa
outofstockper indicare i prodotti non disponibili. - Valutazioni – Termini come
rated-1fino arated-5categorizzano le recensioni dei prodotti.
Ogni attributo di prodotto viene memorizzato come una tassonomia personalizzata, rendendo facile categorizzare e filtrare i prodotti in modo dinamico.
Operazioni comuni
Eliminare i prodotti in modo sicuro e in blocco per post type
Per rimuovere tutti i prodotti da un database di test o popolato con dati di esempio, agisci su wp_posts per post type e ripulisci le righe postmeta correlate nella stessa operazione:
-- Remove postmeta first (avoids orphaned rows)
DELETE pm
FROM wp_postmeta pm
JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.post_type IN ('product', 'product_variation');
-- Then remove the product and variation rows
DELETE FROM wp_posts
WHERE post_type IN ('product', 'product_variation');
⚠️ Esegui sempre questa operazione prima su un database di staging. Elimina in modo permanente tutte le righe dei prodotti e i loro metadati. Non tocca le tabelle degli ordini.
Migrare i prodotti WooCommerce da staging a live
Quando trasferisci solo i prodotti — non gli ordini — da un ambiente di staging, l’insieme minimo di tabelle da includere è:
wp_posts— righe dovepost_type IN ('product', 'product_variation')wp_postmeta— righe il cuipost_idappartiene a un prodotto o a una variazionewp_terms,wp_termmeta,wp_term_taxonomy,wp_term_relationships— righe legate aproduct_cat,product_tage alle tassonomie di attributi personalizzatewp_woocommerce_attribute_taxonomies— se hai definizioni di attributi globali personalizzate nell’ambiente di origine
Lascia fuori dal push tutte le tabelle wp_woocommerce_order* e wp_wc_order*: includerle sovrascriverebbe gli ordini dei clienti in produzione con i dati di staging.
Reimpostare i dati dei prodotti di test
Dopo aver popolato uno store di staging con prodotti di test, riportalo a uno stato pulito eliminando le righe dove post_type = 'product' con la query precedente. Il push selettivo di WP STAGING ti consente anche di definire quali post type includere o escludere, così puoi trasferire prodotti reali da staging a live senza scrivere SQL grezzo.
Migliori pratiche per copiare i dati dei prodotti su un sito live
Quando sposti nuovi prodotti da un sito di staging a uno live, proteggi gli ordini e i dati dei clienti seguendo questi passaggi:
- Esegui un backup del database live. Esporta uno snapshot completo prima di qualsiasi push, così puoi ripristinare immediatamente se qualcosa va storto.
- Copia solo le tabelle rilevanti. Concentrati su
wp_posts,wp_postmetae sulle tabelle relative alle tassonomie. - Escludi le tabelle relative agli ordini. Evita le tabelle con prefisso
wp_woocommerce_a meno che tu non intenda esplicitamente migrare i dati degli ordini. - Usa uno strumento di migrazione. Plugin come WP STAGING gestiscono automaticamente i push selettivi delle tabelle, inclusa la ricerca-e-sostituzione nei dati serializzati per le differenze di URL tra gli ambienti.
- Verifica prima su staging. Esegui una query in sola lettura sul database di staging per confermare il numero di righe di prodotto previsto prima di avviare il push.
Conclusione
I prodotti WooCommerce sono memorizzati principalmente in wp_posts e wp_postmeta, mentre categorie, attributi e impostazioni di visibilità vengono gestiti in tabelle di tassonomie correlate. Comprendere questa struttura aiuta a migrare in sicurezza i dati dei prodotti senza compromettere le operazioni dello store live.
Riferimenti:
- Tabelle normali: Descrizione del database di WordPress
- Tabelle specifiche: Descrizione del database di WooCommerce