Introduccion

Actualizar precios de forma masiva en una tienda WooCommerce puede ser una tarea recurrente: subidas por inflación, ajustes de margen, cambios por proveedor o descuentos temporales. Hacerlo desde el panel puede ser tedioso si tienes cientos o miles de productos. Por eso, en este artículo te mostraré cómo hacerlo directamente desde la base de datos (SQL) o mediante PHP, de forma segura, eficiente y automatizable.

  1. Entender la estructura de precios en WooCommerce

WooCommerce guarda los precios de los productos como metadatos en la tabla wp_postmeta:

Campo

Descripción

_regular_price

Precio normal del producto

_sale_price

Precio rebajado (si existe)

_price

Precio actual que se muestra

Todos estos están vinculados a un product_id que es una entrada en wp_posts con el tipo product o product_variation.

  1. Cambiar precios con SQL

Aumentar todos los precios un 10%

UPDATE wp_postmeta
SET meta_value = meta_value * 1.10
WHERE meta_key = '_regular_price';

UPDATE wp_postmeta
SET meta_value = meta_value * 1.10
WHERE meta_key = '_price';

Nota: _price debe reflejar el precio final (oferta o regular).

Cambiar precios solo de una categoría

Supone que tienes la categoría con ID 23:

UPDATE wp_postmeta pm
JOIN wp_term_relationships tr ON pm.post_id = tr.object_id
JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
SET pm.meta_value = pm.meta_value * 1.20
WHERE pm.meta_key = '_regular_price'
AND tt.term_id = 23;
  1. Cambiar precios con PHP (script standalone)

<?php

require_once(‘wp-load.php’);

 $args = array(

  ‘post_type’ => ‘product’,

  ‘posts_per_page’ => -1

);

 

$products = get_posts($args);

foreach ($products as $product_post) {

  $product = wc_get_product($product_post->ID);

  $price = $product->get_regular_price();

  $new_price = $price * 1.10; 

  $product->set_regular_price($new_price);

  $product->set_price($new_price);

  $product->save();

}

echo «Precios actualizados.»;

?>

Este script puede ejecutarse directamente en la raíz de tu instalación y permite control total por condiciones adicionales.

  1. Filtrar productos específicos (por proveedor, marca, atributo)

Usando PHP:

$args = array(

  ‘post_type’ => ‘product’,

  ‘posts_per_page’ => -1,

  ‘meta_query’ => array(

    array(

      ‘key’ => ‘_supplier’,

      ‘value’ => ‘proveedor-x’

    )

  )

);

Esto te permite modificar precios solo de productos que cumplen con ciertos metadatos personalizados.

  1. Comparativa: SQL vs PHP

Método

Ventajas

Desventajas

SQL directo

Rápido, masivo, eficiente

Riesgo si se aplica mal, sin validación

PHP con WooCommerce

Más seguro, validaciones nativas, integración con hooks

Más lento en grandes catálogos

  1. Reindexar precios y limpiar caché (opcional)

Si usas caché de objetos, transients o plugins como WP Rocket:

  • Limpia la caché del sitio
  • Borra transients relacionados con productos y precios:
delete_transient('wc_var_prices_...');
wp_cache_flush();
  1. Automatización con CRON

Puedes programar el script PHP para que se ejecute semanal o mensualmente:

0 3 * * 1 php /var/www/html/actualizar-precios.php

Conclusión

Cambiar precios masivamente en WooCommerce es totalmente viable desde SQL o PHP. Si necesitas velocidad y sabes lo que haces, SQL es ideal. Si buscas integración total con el sistema (sin romper hooks o funcionalidades externas), PHP es tu aliado.

Ambos enfoques pueden combinarse, y lo más importante es tener claro el criterio de selección, validar los resultados y hacer pruebas previas en entornos de staging antes de aplicarlo en producción.

Ir al contenido