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.
- 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.
- 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;
- 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.
- 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.
- 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 |
- 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();
- 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.