Saltar al contenido

Cómo Actualizar Precios en WooCommerce desde la Base de Datos (sin decimales)

Actualizar los precios de productos en WooCommerce de forma masiva puede ser una tarea tediosa desde el panel de administración. Pero si tienes acceso a la base de datos, puedes hacerlo rápidamente y con precisión.

En este artículo te explico cómo actualizar los precios de productos directamente desde la base de datos MySQL de WooCommerce, con ejemplos prácticos y precauciones que debes tomar.

¿Cómo almacena WooCommerce los precios?

WooCommerce guarda los precios de los productos en la tabla wp_postmeta, mediante tres claves:

  • _price: Precio actual del producto (el que se muestra al usuario).
  • _regular_price: Precio sin descuento.
  • _sale_price: Precio en oferta, si existe.

Estas claves están asociadas a cada producto mediante su post_id, que corresponde al ID del producto en la tabla wp_posts.

Precaución: haz una copia de seguridad ⚠️

Antes de realizar cualquier cambio en la base de datos, haz una copia de seguridad completa. Una consulta mal ejecutada puede afectar a toda tu tienda.

Cómo ver los precios actuales desde la base de datos

Puedes usar esta consulta para ver los precios actuales de todos los productos:

SELECT 
    p.ID AS product_id,
    p.post_title AS product_name,
    pm.meta_key,
    pm.meta_value AS price
FROM 
    wp_posts p
INNER JOIN 
    wp_postmeta pm 
ON 
    p.ID = pm.post_id
WHERE 
    p.post_type = 'product'
    AND pm.meta_key IN ('_price', '_regular_price', '_sale_price');

Cómo actualizar un precio sin decimales para un producto específico

Supongamos que quieres redondear hacia abajo (quitar decimales) para el producto con post_id = 123:

UPDATE wp_postmeta
SET meta_value = FLOOR(meta_value)
WHERE meta_key IN ('_price', '_regular_price', '_sale_price')
  AND post_id = 123;

Si prefieres redondear normalmente:

UPDATE wp_postmeta
SET meta_value = ROUND(meta_value)
WHERE meta_key IN ('_price', '_regular_price', '_sale_price')
  AND post_id = 123;

Consejo: antes y después de hacer esto, puedes verificar los precios actuales del producto con esta consulta:

SELECT meta_key, meta_value
FROM wp_postmeta
WHERE post_id = 123
  AND meta_key IN ('_price', '_regular_price', '_sale_price');

Cómo hacer la actualización masiva para todos los productos

Si quieres eliminar los decimales de todos los precios de toda la tienda:

UPDATE wp_postmeta
SET meta_value = FLOOR(meta_value)
WHERE meta_key IN ('_price', '_regular_price', '_sale_price');

O si prefieres redondear normalmente:

UPDATE wp_postmeta
SET meta_value = ROUND(meta_value)
WHERE meta_key IN ('_price', '_regular_price', '_sale_price');

Finaliza el proceso: limpia caché y recalcula precios

WooCommerce almacena algunos precios en caché. Después de hacer cambios:

  1. Borra la caché de WooCommerce (o del plugin que uses).
  2. Ve a WooCommerce > Estado > Herramientas.
  3. Ejecuta “Recalcular precios de productos” para asegurarte de que los cambios se reflejen correctamente.

Alternativa: Usa un plugin si prefieres evitar SQL

Si no te sientes cómodo tocando la base de datos, puedes usar plugins como:

  • WP All Import / Export para modificar precios desde un CSV.
  • Product Bulk Editor para hacer cambios en lote desde el backend de WooCommerce.

Conclusión

Modificar los precios directamente desde la base de datos es una forma muy eficiente de ahorrar tiempo, especialmente en tiendas con muchos productos. Solo asegúrate de hacer copias de seguridad y seguir buenas prácticas.

¿Te gustaría que publicáramos más guías técnicas como esta? ¡Déjanos tu comentario o escríbenos!