Referencia de herramientas de cupones de WooCommerce

Siete herramientas para cupones de descuento. Un cupón es dinero: una cantidad escrita aquí es canjeable en la caja en el momento en que se guarda.

Las herramientas

Herramienta Hace Escribe
wc_get_coupons Lista cupones
wc_get_coupon Lee un cupón
wc_get_coupon_count Cuenta cupones por estado
wc_create_coupon Crea un cupón Sí
wc_update_coupon Actualiza un cupón Sí
wc_delete_coupon Envía a la papelera o elimina un cupón Sí
wc_empty_coupon_trash Purga cupones enviados a la papelera Sí

Requisitos

WooCommerce debe estar activo; de lo contrario, ninguna de estas herramientas se registra.

Permisos

Requiere
Ámbitos, lecturas mcp:read, woocommerce:catalog:read
Ámbitos, escrituras mcp:write, woocommerce:catalog:write
Capacidad manage_woocommerce u edit_shop_coupons
Puerta de escritura Allow WooCommerce catalog writes

Hay dos cosas que merece la pena notar.

La capacidad difiere de la de las herramientas de productos. Los productos aceptan edit_products; los cupones aceptan edit_shop_coupons. Un usuario que puede editar productos no puede automáticamente tocar cupones, y lo contrario también es cierto.

El ámbito no difiere. Los cupones comparten los ámbitos woocommerce:catalog:* con los productos, y la misma puerta Allow WooCommerce catalog writes. Abrir esa puerta para una actualización de precio también abre la creación y eliminación de cupones. No hay forma de conceder una sin la otra.

Solo seis campos son editables

code, description, discount_type, amount, date_expires, usage_limit, más individual_use y product_ids.

Todo lo demás que ofrece WooCommerce —gasto mínimo y máximo, límites de uso por usuario, productos y categorías excluidos, correos electrónicos permitidos, envío gratuito, excluir artículos en oferta— no se puede configurar a través de MCP. Esos campos existen en el cupón y simplemente no están expuestos.

La consecuencia práctica: un cupón creado aquí está menos restringido que uno creado en el administrador, porque las restricciones que normalmente lo acotarían son inalcanzables. Un cupón de «10% de descuento» sin gasto mínimo y sin límite por usuario es un cupón que se puede usar en un pedido de 5 €, repetidamente, por cualquiera que encuentre el código.

Crea los cupones que necesiten restricciones en el administrador de WooCommerce, o créalos aquí y añade las restricciones allí antes de publicitar el código.

El listado oculta la fecha de caducidad

wc_get_coupons devuelve id, code, discount_type, amount y usage_limit —y nada más. date_expires, description, individual_use y product_ids aparecen solo en la lectura individual del cupón.

Así que no puedes saber a partir de un listado qué cupones siguen activos. Auditar eso significa una llamada por cupón.

Eliminación, y las dos formas de hacerla

wc_delete_coupon envía a la papelera por defecto y elimina permanentemente con force. wc_empty_coupon_trash elimina permanentemente lo que ya está en la papelera, hasta 100 a la vez.

Ambas están marcadas como destructivas. A diferencia de los productos —que no tienen ninguna herramienta de eliminación—, los cupones pueden eliminarse por completo a través de MCP.

Simulacros

Toda escritura admite dry_run, pero no son igualmente útiles:

  • Actualizar devuelve un before real. Léelo.
  • Crear y eliminar devuelven un eco de lo que enviaste.
  • Vaciar papelera enumera los ID que purgaría, que es el único caso en el que el simulacro es genuinamente informativo.

Una advertencia, tratada en su página: el simulacro de wc_delete_coupon no comprueba que el cupón exista.

Un cupón que ya tiene canjes

Cambiar el importe o el tipo de un cupón que los clientes ya han usado no altera los pedidos pasados, pero sí cambia lo que hace el mismo código la próxima vez. Si un código está circulando, editarlo es un cambio público en una oferta que la gente puede haber tenido en cuenta.

Caducar un cupón suele ser más seguro que editarlo, y crear un código nuevo es más seguro que cualquiera de las dos opciones.