Cómo encontrar productos de WooCommerce en la base de datos

WooCommerce guarda los productos como posts en la base de datos, pero también utiliza taxonomías personalizadas y metadatos para almacenar información específica como precios, atributos, tipo de producto y más.

Este artículo te muestra cómo consultar directamente en la base de datos para obtener productos, variaciones y sus valores relacionados de forma clara y actualizada.

 

Mostrar los productos

WooCommerce guarda todos los productos (simples, variables, agrupados, etc.) en la tabla wp_posts, con post_type = 'product'.

SELECT ID, post_title, post_status
FROM wp_posts
WHERE post_type = 'product'
  AND post_status = 'publish';

Esta consulta muestra todos los productos publicados, sin importar si son simples, variables, etc.

 

Consultar tipo de producto (simple, variable, etc.)

Desde versiones recientes, WooCommerce ya no guarda el tipo de producto como un metadato, sino como una taxonomía llamada product_type.

SELECT p.ID, p.post_title, tt.term_id, t.name AS product_type
FROM wp_posts p
JOIN wp_term_relationships tr ON p.ID = tr.object_id
JOIN wp_term_taxonomy tt     ON tr.term_taxonomy_id = tt.term_taxonomy_id
JOIN wp_terms t              ON tt.term_id = t.term_id
WHERE p.post_type = 'product'
  AND tt.taxonomy = 'product_type';

Esto te da el nombre del producto y su tipo (simple, variable, grouped, external).

 

Obtener precios, SKU y stock de los productos

Los valores como el precio, el SKU y el stock todavía se almacenan en wp_postmeta:

SELECT p.ID              AS product_id,
       p.post_title      AS name,
       sku.meta_value    AS sku,
       price.meta_value  AS regular_price,
       sale.meta_value   AS sale_price,
       stock.meta_value  AS stock
FROM wp_posts p
LEFT JOIN wp_postmeta sku   ON p.ID = sku.post_id   AND sku.meta_key = '_sku'
LEFT JOIN wp_postmeta price ON p.ID = price.post_id AND price.meta_key = '_regular_price'
LEFT JOIN wp_postmeta sale  ON p.ID = sale.post_id  AND sale.meta_key = '_sale_price'
LEFT JOIN wp_postmeta stock ON p.ID = stock.post_id AND stock.meta_key = '_stock'
WHERE p.post_type = 'product'
  AND p.post_status = 'publish';

 

Ver atributos del producto

Los atributos asignados al producto padre se almacenan en la meta clave _product_attributes, como un array serializado:

SELECT post_id, meta_value
FROM wp_postmeta
WHERE meta_key = '_product_attributes'
  AND post_id = 123; -- Cambiar por el ID del producto

Para visualizar correctamente el contenido, puedes usar herramientas de deserialización de PHP o cargarlo en un script de WordPress para interpretarlo como array.

 

Consultar variaciones de un producto variable

Las variaciones se almacenan como post_type = 'product_variation', con post_parent = ID del producto padre.

SELECT v.ID               AS variation_id,
       v.post_title       AS variation_name,
       sku.meta_value     AS sku,
       price.meta_value   AS regular_price,
       sale.meta_value    AS sale_price
FROM wp_posts v
LEFT JOIN wp_postmeta sku   ON v.ID = sku.post_id   AND sku.meta_key = '_sku'
LEFT JOIN wp_postmeta price ON v.ID = price.post_id AND price.meta_key = '_regular_price'
LEFT JOIN wp_postmeta sale  ON v.ID = sale.post_id  AND sale.meta_key = '_sale_price'
WHERE v.post_type = 'product_variation'
  AND v.post_parent = 123; -- Cambiar por el ID del producto variable

 

Obtener atributos asignados a cada variación

SELECT meta_key, meta_value
FROM wp_postmeta
WHERE post_id = 456 -- ID de la variación
  AND meta_key LIKE 'attribute_%';

Aquí se almacenan los atributos seleccionados como attribute_pa_color, attribute_pa_size, etc.

 

Consultar productos en WooCommerce directamente desde la base de datos es útil para auditar datos, generar reportes personalizados o integrarte con sistemas externos. Recuerda:

  • El tipo de producto ahora está en la taxonomía product_type, no en postmeta.
  • Los atributos están en _product_attributes (producto padre) y como attribute_* en cada variación.
  • Las variaciones son posts hijos con post_type = 'product_variation'.

 

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Back to Top
0
Would love your thoughts, please comment.x
()
x