wc_update_coupon: actualizar un cupón
Cambia un cupón existente. Solo se modifican los campos que envíes.
Argumentos
| Argumento | Obligatorio | Significado |
|---|---|---|
id |
Sí | El cupón |
code |
No | El código que escriben los clientes |
discount_type |
No | percent, fixed_cart o fixed_product |
amount |
No | El valor del descuento |
description |
No | Nota interna |
date_expires |
No | Cuándo deja de funcionar |
usage_limit |
No | Total de canjes permitidos |
individual_use |
No | Impedir combinar con otros cupones |
product_ids |
No | Restringir a productos concretos |
dry_run |
No | Informar sin escribir |
Permisos
Allow WooCommerce catalog writes abierto, además de manage_woocommerce o edit_shop_coupons.
El after de la simulación no es el resultado
Esta es la trampa específica de esta herramienta. La simulación devuelve:
before— el cupón tal como está ahora, completamente formateado y preciso.after— los argumentos que enviaste, sin procesar.
after no es el cupón que resultaría. No combina tus cambios en el registro existente, y un campo que no enviaste simplemente no aparece allí — lo cual parece, a simple vista, como si se fuera a borrar.
Lee before con atención; es real y es tu registro. Trata after como un eco de tu solicitud y calcula tú mismo el cupón resultante:
Simula el cambio, muéstrame el
beforey dime cómo quedará cada campo después.
El importe y el tipo deben razonarse juntos
Cambiar amount de 10 a 25 en un cupón percent es un gran regalo. Cambiar discount_type de fixed_cart a percent dejando amount en 20 convierte 20 € de descuento en un 20 % de descuento — en un pedido de 500 €, eso son 100 €.
El before te dice el tipo actual. Compruébalo antes de cambiar el importe, y no cambies nunca ambos en una sola llamada sin indicar primero el comportamiento resultante.
Cambiar code rompe el código en circulación
El cupón conserva su ID y su historial, pero la cadena que escriben los clientes cambia. Cualquiera que tenga el código antiguo verá «el cupón no existe» al pagar.
Si un código se ha hecho público, no lo renombres. Crea un cupón nuevo y haz caducar el antiguo.
Caducar es la forma segura de retirar un cupón
Establecer date_expires en una fecha pasada o inminente hace que el cupón deje de funcionar sin borrar nada. El registro sigue siendo legible, el código sigue reservado y puede reactivarse cambiando la fecha de nuevo.
Prefiere esto a wc_delete_coupon para cualquier cosa que se haya usado.
Para eliminar una caducidad — haciendo el cupón permanente — tendrías que borrar el campo, lo cual rara vez es lo que alguien quiere. Sé explícito si es tu intención.
Los pedidos pasados no se ven afectados
Editar un cupón no cambia retroactivamente los pedidos que ya lo usaron. Lo que cambia es lo que hace el código a partir de ahora.
Eso es tranquilizador para la contabilidad y poco útil para el control de daños: si un código fue demasiado generoso durante una hora, los pedidos realizados en esa hora conservan su descuento.
usage_limit por debajo del uso actual
Bajar el límite por debajo del número de canjes ya realizados hace que el cupón deje de funcionar inmediatamente. Es una forma legítima de matar un código rápido — más rápido que editar fechas, ya que no requiere razonar sobre zonas horarias.
MCP no puede mostrarte el recuento de uso actual, así que no puedes calcular el margen. Ponlo en 1 si la intención es «detén esto ya».
Después de escribir
- Lee de nuevo el cupón con
wc_get_coupon— no solo la respuesta de la herramienta. - Prueba el código en un carrito si el importe o el tipo cambiaron.
- Confirma que la caducidad se comporta como se pretende según la zona horaria del sitio.
Problemas comunes
| Síntoma | Causa |
|---|---|
| La escritura se rechaza | Puerta de escritura del catálogo cerrada |
pom_ai_mcp_wc_coupon_not_found |
ID incorrecto, o se pasó el código en su lugar |
pom_ai_mcp_wc_forbidden |
Falta manage_woocommerce o edit_shop_coupons |
El after parece que se borraron campos |
Hace eco de tus argumentos; los campos no enviados no cambian |
| El descuento está muy desviado | discount_type y amount no coinciden |
| Los clientes dicen que el código no es válido | code fue renombrado, o se alcanzó el límite |
| El cupón sigue funcionando tras caducar | Zona horaria, o un pago en caché |
Relacionado
wc_get_coupon— lee primero; este es tu único registrowc_create_couponwc_delete_coupon
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 de variación 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. Cada escritura usa el flujo de trabajo de aprobación.