
Resumen rápido: WooCommerce almacena todos los productos como custom post types en
wp_posts, con los atributos y metadatos (precio, SKU, stock) enwp_postmeta. Las categorías, etiquetas y atributos de producto se encuentran en la familia de tablaswp_terms. Los indicadores de visibilidad y tipo de producto se almacenan como claves de post meta.
A veces añades nuevos productos de WooCommerce en tu sitio de staging y simplemente quieres llevar esos nuevos productos al sitio en producción sin afectar otros datos como pedidos y transacciones. Saber qué tablas de la base de datos usa WooCommerce hace que esa transferencia sea segura y predecible: copias solo las filas que contienen datos de productos y dejas intactas las filas de pedidos.
Este artículo mapea cada tabla que contiene datos de productos de WooCommerce, explica las columnas que importan en el día a día e incluye SQL listo para copiar y pegar para las consultas más habituales. Si alguna vez te has preguntado por qué un cambio de producto en staging no se reflejó tras un push parcial, la respuesta casi siempre es una tabla que se quedó fuera.
Por qué importa saber dónde se almacenan los productos
Comprender dónde se almacenan los productos de WooCommerce es útil en varias situaciones prácticas:
- Consultas personalizadas: Obtener datos de productos mediante consultas SQL para informes o funcionalidades a medida.
- Optimización de la base de datos: Limpiar datos innecesarios para mejorar el rendimiento.
- Solución de problemas: Resolver problemas con detalles de producto faltantes o incorrectos.
- Migración de datos: Mover productos entre distintas instalaciones de WordPress sin tocar los datos de pedidos o clientes.
- Depurar atributos faltantes: Cuando el color o la talla de un producto no aparece en el front-end, saber qué tabla de taxonomía revisar ahorra mucho tiempo de depuración.
Tablas clave que almacenan datos de productos de WooCommerce
WooCommerce almacena los datos de productos principalmente en dos tablas:
wp_posts– Contiene las entradas de productos con un post type deproductoproduct_variation.

wp_postmeta– Almacena metadatos adicionales para cada producto, vinculados mediantepost_id(ID de producto).

Resumen de tablas
La siguiente tabla relaciona cada área de almacenamiento principal con lo que contiene y las columnas que más se necesitan en consultas o migraciones:
| Tabla | Qué almacena | Columnas clave |
|---|---|---|
wp_posts |
Cada producto y variación como una fila | ID, post_title, post_type = 'product', post_status, post_modified |
wp_postmeta |
Precio, SKU, stock, peso, dimensiones — una fila por clave y producto | post_id, meta_key, meta_value |
wp_terms |
Nombres de categorías y etiquetas, etiquetas de atributos | term_id, name, slug |
wp_term_taxonomy |
Declara si un término es una categoría, etiqueta o atributo | term_taxonomy_id, taxonomy, description |
wp_term_relationships |
Vincula cada producto (object_id) con sus términos |
object_id, term_taxonomy_id |
wp_termmeta |
Metadatos adicionales asociados a los términos | term_id, meta_key, meta_value |
wp_woocommerce_attribute_taxonomies |
Definiciones de atributos globales (p. ej., Color, Talla) | attribute_id, attribute_name, attribute_type |
Ejemplo práctico: recuperar un producto con su precio y nivel de stock
La consulta siguiente une wp_posts con wp_postmeta para obtener el precio y el estado de stock de un único producto. Sustituye 12345 por el valor ID del producto en 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;
En nuestras pruebas con WooCommerce 9.x, la clave meta _price siempre está rellena incluso cuando el producto no tiene un precio de oferta explícito: refleja el precio normal. Por la experiencia del soporte de WP STAGING, la fuente de confusión más común es suponer que WooCommerce usa sus propias tablas completamente separadas para los productos. No es así: extiende wp_posts mediante el sistema de custom post types, de modo que cada producto es una fila de post con un valor de post_type igual a product.
Referencia rápida: encuentra lo que necesitas
Usa esta tabla para ir directamente a la tabla y columna correctas sin leer toda la documentación del esquema:
| Quiero … | Tabla | Filtro |
|---|---|---|
| Listar todos los productos | wp_posts |
post_type = 'product' |
| Encontrar el precio de un producto | wp_postmeta |
meta_key = '_price' |
| Encontrar el precio de oferta de un producto | wp_postmeta |
meta_key = '_sale_price' |
| Comprobar el estado de stock | wp_postmeta |
meta_key = '_stock_status' |
| Encontrar el SKU de un producto | wp_postmeta |
meta_key = '_sku' |
| Listar las categorías de un producto | wp_term_relationships → wp_term_taxonomy → wp_terms |
taxonomy = 'product_cat' |
| Comprobar si un producto está destacado | wp_term_relationships |
slug de término featured en product_visibility |
| Encontrar todas las variaciones de un producto | wp_posts |
post_type = 'product_variation' y post_parent = <ID de producto> |
Tablas que almacenan categorías, etiquetas y atributos de producto
Además de las tablas principales de productos, WooCommerce utiliza varias tablas relacionadas con taxonomías para gestionar tipos de producto, categorías, subcategorías, etiquetas y atributos:
wp_terms– Almacena las categorías y etiquetas de productos.wp_termmeta– Almacena los metadatos de los términos de producto.wp_term_taxonomy– Define el tipo de taxonomía (p. ej., categoría, etiqueta, atributo).wp_term_relationships– Vincula los productos con sus categorías y atributos.wp_woocommerce_termmeta– Almacena datos adicionales de términos específicos de WooCommerce.wp_woocommerce_attribute_taxonomies– Gestiona específicamente los atributos de producto.
Cuando un atributo de producto no aparece correctamente en el front-end, revisa tanto wp_term_relationships (para confirmar que el producto está vinculado al término correcto) como wp_term_taxonomy (para confirmar que la columna taxonomy coincide con el slug del atributo esperado).
Tipos de producto y visibilidad en WooCommerce
WooCommerce gestiona los distintos tipos de producto mediante la taxonomía product_type, que incluye las siguientes opciones por defecto:
simple– Un producto estándar sin variaciones.grouped– Una colección de productos relacionados.variable– Un producto con varias variaciones.external– Un producto vendido en un sitio web externo.
Desde WooCommerce 3+, una nueva taxonomía llamada product_visibility gestiona:
- Visibilidad en búsqueda y catálogo – Usa términos como
exclude-from-searchyexclude-from-catalog. - Productos destacados – Identificados con el término
featured. - Estado de stock – Usa
outofstockpara indicar productos no disponibles. - Valoraciones – Términos como
rated-1arated-5clasifican las reseñas de productos.
Cada atributo de producto se almacena como una taxonomía personalizada, lo que facilita categorizar y filtrar productos de forma dinámica.
Operaciones habituales
Eliminar productos de forma masiva y segura por post type
Para eliminar todos los productos de una base de datos de prueba o con datos de ejemplo, apunta a wp_posts por post type y limpia las filas de postmeta relacionadas en la misma operación:
-- 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');
⚠️ Ejecuta esto siempre primero contra una base de datos de staging. Elimina de forma permanente todas las filas de productos y sus metadatos. No toca las tablas de pedidos.
Migrar productos de WooCommerce de staging a producción
Cuando solo envías productos —no pedidos— desde un entorno de staging, el conjunto mínimo de tablas a incluir es:
wp_posts— filas dondepost_type IN ('product', 'product_variation')wp_postmeta— filas cuyopost_idpertenece a un producto o variaciónwp_terms,wp_termmeta,wp_term_taxonomy,wp_term_relationships— filas vinculadas aproduct_cat,product_tagy taxonomías de atributos personalizadaswp_woocommerce_attribute_taxonomies— si tienes definiciones de atributos globales personalizadas en el entorno de origen
Deja fuera del push todas las tablas wp_woocommerce_order* y wp_wc_order*: incluirlas sobrescribiría los pedidos de clientes en producción con datos de staging.
Restablecer los datos de productos de prueba
Después de poblar una tienda de staging con productos de prueba, restablécela a un estado limpio eliminando las filas donde post_type = 'product' con la consulta anterior. El push selectivo de WP STAGING también te permite definir qué post types incluir o excluir, de modo que puedes enviar productos reales de staging a producción sin escribir SQL en bruto.
Buenas prácticas para copiar datos de productos a un sitio en producción
Al mover productos nuevos de un sitio de staging a uno en producción, protege los pedidos y los datos de clientes siguiendo estos pasos:
- Haz una copia de seguridad de la base de datos en producción. Exporta una instantánea completa antes de cualquier push para poder restaurar de inmediato si algo sale mal.
- Copia solo las tablas relevantes. Céntrate en
wp_posts,wp_postmetay las tablas relacionadas con taxonomías. - Excluye las tablas relacionadas con pedidos. Evita las tablas con el prefijo
wp_woocommerce_salvo que tengas la intención expresa de migrar datos de pedidos. - Usa una herramienta de migración. Plugins como WP STAGING gestionan los pushes selectivos de tablas automáticamente, incluido el buscar y reemplazar en datos serializados para las diferencias de URL entre entornos.
- Verifica primero en staging. Ejecuta una consulta de solo lectura contra la base de datos de staging para confirmar el número de filas de producto esperado antes de iniciar el push.
Conclusión
Los productos de WooCommerce se almacenan principalmente en wp_posts y wp_postmeta, mientras que las categorías, atributos y configuraciones de visibilidad se gestionan en tablas de taxonomías relacionadas. Comprender esta estructura ayuda a migrar de forma segura los datos de productos sin afectar las operaciones de la tienda en producción.
Referencias:
- Tablas normales: Descripción de la base de datos de WordPress
- Tablas específicas: Descripción de la base de datos de WooCommerce