wc_update_variation: actualizar una variación

Actualiza una variación de un producto variable.

Argumentos

Argumento Obligatorio Significado
id Sí La variación
sku No Referencia de stock (SKU)
regular_price No Precio normal
sale_price No Precio de oferta
description No Descripción de la variación
stock_quantity No Nivel de stock
attributes No La combinación de atributos
dry_run No Informar sin escribir

Solo se modifican los campos que envíes.

Permisos

Allow WooCommerce catalog writes abierta, más manage_woocommerce o edit_products.

Usa la simulación y lee el before

Devuelve un before y un after auténticos:

Usa una simulación para fijar el precio normal en la variación 2204 y muéstrame el antes y el después.

El before te indica si actualmente hay un precio de oferta activo en esta variación — lo que determina si tu cambio afecta a lo que pagan los clientes. Las variaciones suelen estar en oferta de forma individual, por lo que esto varía dentro de un mismo producto.

Los campos de precio se comportan igual que en los productos

regular_price es el precio normal, sale_price es el descuento, y price en la respuesta es el resultado calculado por WooCommerce y no se puede escribir.

Para terminar una oferta en una variación, pon sale_price en un valor vacío. Omitirlo deja el descuento activo.

Consulta wc_update_product, donde se describen en detalle esos mismos tres campos.

Cambiar attributes reidentifica la variación

Este es el campo exclusivo de las variaciones y el más peligroso de todos los que hay aquí.

attributes define qué combinación representa la variación. Cambiarlo no mueve un precio de una combinación a otra — redefine lo que es esta variación.

Dos modos de fallo:

  • Una combinación que ya no coincide con los atributos del producto padre hace que la variación deje de poder seleccionarse. Sigue existiendo, pero ningún cliente puede acceder a ella.
  • Una combinación que duplica otra variación deja dos variaciones compitiendo por la misma selección, y WooCommerce elige una.

Lee los atributos del producto padre y las variaciones hermanas antes de tocar este campo. La mayor parte del trabajo con precios y stock no debería tocarlo en absoluto:

Actualiza solo el precio normal. No cambies los atributos.

Stock

stock_quantity establece un número; que WooCommerce lo use depende de que la gestión de stock esté activada en el producto padre, que no es un campo de variación.

Comprueba el producto padre con wc_get_product antes de dar por hecho que una escritura de stock tendrá efecto.

Sin historial de revisiones

Las variaciones no guardan historial de precios ni de stock. Los valores que leas antes de escribir son el único registro.

Muéstrame el precio y el stock actuales de la variación 2204 y luego aplica el cambio.

Vuelve a leerla y comprueba la tienda

La respuesta refleja lo que se guardó, pero otros plugins enlazan con el guardado de variaciones — precios dinámicos, feeds, sincronización de inventario.

Después de escribir:

  1. Vuelve a leer la variación.
  2. Abre la página del producto.
  3. Selecciona esa combinación concreta y confirma el precio y la disponibilidad que se muestran.
  4. Comprueba el rango de precios del producto en las páginas de listado.
  5. Purga la caché y, después, la CDN.

El paso 3 es la prueba. Que los datos guardados sean correctos no garantiza que el selector se comporte bien.

Antes de un lote

Actualiza una variación con una simulación, aplícala, comprueba la tienda y solo entonces usa wc_batch_update_variations.

Problemas comunes

Síntoma Causa
Se rechaza la escritura Puerta de escritura del catálogo cerrada
pom_ai_mcp_wc_variation_not_found ID incorrecto, o el ID es un producto
pom_ai_mcp_wc_forbidden Falta capacidad de tienda
El precio del cliente no cambió Sigue activo un precio de oferta
La variación desapareció del selector Su attributes ya no coincide con el producto padre
El stock se ignora La gestión de stock está desactivada en el producto padre
El rango de precios está obsoleto Caché no purgada

Permisos de objeto

El acceso al catálogo por sí solo no autoriza todos los objetos. Las actualizaciones y las lecturas privadas comprueban el objeto seleccionado; las operaciones con variaciones también comprueban su producto padre. La eliminación requiere capacidades de borrado. Crear un cupón requiere capacidades de creación y publicación de cupones; crear un atributo global requiere manage_product_terms. Toda escritura usa el flujo de aprobación.