¿Dónde se almacenan los productos de WooCommerce en la base de datos de WordPress?

Dónde almacena WooCommerce los datos de producto en la base de datos

Resumen rápido: WooCommerce almacena todos los productos como custom post types en wp_posts, con los atributos y metadatos (precio, SKU, stock) en wp_postmeta. Las categorías, etiquetas y atributos de producto se encuentran en la familia de tablas wp_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 de product o product_variation.
Encontrar detalles de producto de WooCommerce usando la tabla wp_posts
  • wp_postmeta – Almacena metadatos adicionales para cada producto, vinculados mediante post_id (ID de producto).
Encontrar el detalle del producto usando la tabla wp_postmeta

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_relationshipswp_term_taxonomywp_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-search y exclude-from-catalog.
  • Productos destacados – Identificados con el término featured.
  • Estado de stock – Usa outofstock para indicar productos no disponibles.
  • Valoraciones – Términos como rated-1 a rated-5 clasifican 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 donde post_type IN ('product', 'product_variation')
  • wp_postmeta — filas cuyo post_id pertenece a un producto o variación
  • wp_terms, wp_termmeta, wp_term_taxonomy, wp_term_relationships — filas vinculadas a product_cat, product_tag y taxonomías de atributos personalizadas
  • wp_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:

  1. 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.
  2. Copia solo las tablas relevantes. Céntrate en wp_posts, wp_postmeta y las tablas relacionadas con taxonomías.
  3. 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.
  4. 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.
  5. 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:

Artículos relacionados

Rene Hermenau

Autor: Rene Hermenau

Sobre el autor: René Hermenau es el fundador de WP STAGING. Trabaja en copias de seguridad de WordPress, entornos de staging, migraciones, gestión de bases de datos y flujos de despliegue seguros.