Cumplimiento del desistimiento y garantía legal de la UE

Descripción

Dos plazos de la UE, un plugin. Desde el 19 de junio de 2026, la Directiva 2023/2673 obliga a todo minorista en línea de la UE a ofrecer una función de desistimiento digital al menos tan fácil de usar como el proceso de compra. Desde el 27 de septiembre de 2026, la Directiva (UE) 2024/825 y el Reglamento de Ejecución (UE) 2025/1960 obligan a toda tienda que venda bienes a mostrar el aviso armonizado sobre la garantía legal de conformidad. La mayoría de los plugins del directorio se quedan en «un botón de desistimiento». Este cubre ambos, gratis y completo.

El aviso de garantía legal

El aviso oficial se incluye en los 24 idiomas de la UE y se muestra sin editar, tal como exige el reglamento: encima del botón de realizar el pedido tanto del proceso de compra clásico como del de bloques, y en los correos electrónicos de tus pedidos con el PDF oficial adjunto, para que sobreviva a los clientes de correo que bloquean imágenes remotas. Tres modos de visualización (el aviso completo, un desplegable o un popover nativo para columnas estrechas), la nota española de los tres años donde corresponde, un shortcode para tu propia página de garantía, un enlace en el pie de página y una nota privada del pedido que registra qué aviso vio cada comprador. Solo se muestra cuando el carrito contiene bienes: el aviso no cubre servicios ni contenido digital.

La función de desistimiento

  • Confirmación en dos pasos (art. 11a.3): el formulario lleva a una pantalla de revisión con un resumen de solo lectura y un botón «Confirmar desistimiento», y la solicitud se registra solo cuando se pulsa ese botón. Se mantiene en el servidor en un token de un solo uso, por lo que funciona sin JavaScript.
  • Acuse de recibo en soporte duradero (art. 11a.4): el correo electrónico de confirmación reproduce la declaración completa y la fecha y hora exactas del envío, con un hash de recibo SHA-256 verificable que puede recalcularse a partir de los campos almacenados si surge una disputa.
  • Formulario de desistimiento del modelo del anexo I.B generado a partir de los datos de tu tienda, plegable debajo del formulario público e imprimible desde la misma URL. Cumple la obligación de información del art. 6.1.h, que la nueva directiva no sustituye.
  • Dos casillas de consentimiento en el proceso de compra de WooCommerce: la obligatoria para contenido digital (art. 16.m), que bloquea el pedido hasta que se acepta, y la opcional para servicios iniciados dentro del plazo de 14 días (art. 14.4.a), que habilita la facturación prorrateada. Ambas se guardan en el pedido con el texto exacto mostrado, aceptado o rechazado, marca de tiempo, IP y agente de usuario.
  • Un desplegable de «Estado de desistimiento» por producto y por categoría, con cuatro opciones, que controla a la vez la exclusión del artículo 16 y el consentimiento correspondiente en el proceso de compra, con herencia completa de subcategorías. Los plugins de la competencia lo reservan para un plan de pago.
  • Aviso configurable en productos excluidos, entre el precio y el botón de añadir al carrito, con su propio título y cuerpo por tipo de excepción.
  • Integración nativa con el RGPD: fragmento de política de privacidad, exportador y borrador de datos personales, todo indexado por el correo electrónico del cliente.
  • Modo independiente: formulario, shortcode, registro de solicitudes, correos electrónicos, hash de recibo, anexo I.B y RGPD funcionan sin WooCommerce, en el mismo menú Cumplimiento UE en cada instalación.

En la parte visible de la web

  • Una página de desistimiento creada al activar, con una plantilla neutra lista para publicar y el recordatorio de revisarla con un abogado en el escritorio en lugar de en la página.
  • [ayudawp_withdrawal_form] para el formulario, [ayudawp_withdrawal_link] para un enlace permanente a él desde cualquier pie de página o área de widgets, [ayudawp_guarantee_notice] para el aviso de garantía, [ayudawp_guarantee_link] para su página, y [ayudawp_withdrawal_excluded_notice] para maquetadores de páginas que omiten los ganchos estándar de WooCommerce.
  • Formulario semántico con validación HTML5, honeypot, salida escapada, entrada saneada y nonces CSRF, además de una casilla de política de privacidad enlazada a tu página configurada.

Con WooCommerce

  • Enlace «Mi cuenta Derecho de desistimiento», con un botón «Desistir» para cada pedido mientras esté en un estado que lo permita, que enlaza directamente con el formulario con los datos del pedido ya rellenados.
  • Seguimiento de solicitudes para el cliente: la misma pantalla lista sus solicitudes con fecha, pedido, alcance, estado, tu nota de resolución y el código del recibo, y la fila del pedido muestra una solicitud abierta en lugar de un hueco vacío.
  • Aviso de desistimiento en los correos electrónicos transaccionales, con un enlace directo al formulario. Estados elegibles configurables; los correos electrónicos de administración nunca lo reciben.
  • Verificación automática del par pedido y correo electrónico, condicionada por los estados configurados. El plazo de 14 días es una marca orientativa para ti, no un rechazo automático, porque el plazo empieza a contar desde la entrega. Base y días de gracia configurables, con un modo estricto opcional.
  • Modo opcional «Aceptar solicitudes no coincidentes»: registra lo que no coincide con un pedido como sin verificar para su revisión manual en lugar de rechazarlo. Desactivado por defecto.
  • Compatibilidad con números de pedido con Sequential Order Numbers y Custom Order Numbers (Tyche y WPFactory), además de un filtro para cualquier otro esquema.
  • Columna «Desistimiento» en la pantalla de pedidos, notas privadas del pedido en cada paso y compatibilidad con HPOS declarada.

En la administración

  • Registro completo de solicitudes como tipo de entrada privado con su ciclo de vida de estados, datos del cliente, alcance, IP, agente de usuario y marca de tiempo UTC.
  • Exportación a CSV para auditorías contables y de protección al consumidor, por acción en lote o filtrada por estado y rango de fechas, con las celdas escapadas contra la inyección de fórmulas.
  • Rastro de auditoría por solicitud: marca de tiempo de resolución en cada cambio de estado y si el acuse de recibo se aceptó para su entrega, en la pantalla de detalle y en el CSV.
  • Acciones en lote, un metabox de estado con un comentario obligatorio al rechazar, y los consentimientos capturados en el proceso de compra archivados.
  • Correos electrónicos: acuse de recibo al cliente, aviso a la tienda con la respuesta dirigida al cliente y un seguimiento en cada cambio de estado.
  • Aviso legal en la página de ajustes, y una etiqueta «Obligatorio» / «Recomendado» / «Opcional» en cada ajuste.

Tiendas multilíngües: WPML y Polylang

El cumplimiento no puede depender del idioma en el que estuviera navegando el cliente, así que ambos son compatibles sin nada que configurar. Establece el estado de desistimiento una sola vez, en el producto o la categoría de tu idioma original, y se mantiene en todas las traducciones, con un estado explícito en una traducción que sigue teniendo prioridad. Cada enlace sigue el idioma del visitante, y el aviso de garantía también. El archivo wpml-config.xml incluido expone tus propios textos editables a la Traducción de cadenas y marca el registro de solicitudes como no traducible. Consulta las preguntas frecuentes para conocer la limitación actual de los correos electrónicos del propio plugin.

Creado para uso real

  • El CSS solo se carga donde se necesita: la página de desistimiento, el proceso de compra, las páginas de producto que realmente muestran un aviso y las propias pantallas de administración del plugin.
  • Distribuido como paquetes de idioma desde translate.wordpress.org. Sigue los estándares de código de WordPress, con salida escapada, entrada saneada, comprobaciones de permisos y nonces.
  • 19 filtros documentados y 4 acciones, para que las agencias puedan ampliarlo sin necesidad de bifurcarlo.
  • PHP 7.4+, WordPress 6.0+, WooCommerce 7.0+ (opcional).

¿Por qué este plugin?

  • Totalmente gratuito, sin plan de pago. Sin extensión premium, sin funciones detrás de una venta adicional, sin versión «Pro» en el horizonte.
  • El único plugin del directorio que emite un hash de recibo SHA-256 como prueba duradera de cada solicitud, que incluye el formulario del modelo del anexo I.B, que inyecta los dos consentimientos del proceso de compra con prueba en el pedido, y que te da las exclusiones del artículo 16 con herencia de subcategorías sin un plan de pago.
  • El aviso armonizado de garantía incluido, en los 24 idiomas, en el proceso de compra y en los correos electrónicos, que es la segunda obligación que llega en 2026 y la que la mayoría de los plugins todavía ignora.
  • Compatibilidad multilingüe real con WPML y Polylang, y todo configurable desde la pantalla de ajustes sin escribir una sola línea de código.
  • Mantenido por un formador español de WordPress con más de 20 años en la plataforma, con la traducción es_ES actualizada por el propio autor, respuestas en el foro de soporte y una hoja de ruta activa de mejoras gratuitas.

Hoja de ruta

Planificado para próximas versiones gratuitas: la etiqueta de durabilidad GARAN por producto; los consentimientos del proceso de compra dentro del bloque de finalizar compra; correos electrónicos HTML que hereden el tema de WooCommerce y correos electrónicos del cambio de estado en el idioma del cliente; un bloque de Gutenberg y un widget para el enlace de desistimiento; un estado de pedido personalizado «Desistimiento solicitado»; un PDF de la solicitud con su hash de recibo; y un widget de escritorio.

Privacidad

Para cada solicitud, el plugin almacena el nombre y el correo electrónico del cliente, la referencia y la fecha del pedido, la dirección IP y el agente de usuario, la marca de tiempo UTC del envío y el hash de recibo SHA-256. Todo ello sirve a la trazabilidad legal que exige la directiva y permite a la tienda gestionar la solicitud.

Los datos residen en un tipo de entrada personalizado privado (ayudawp_withdrawal) accesible solo por los perfiles que autorices. No se envía nada a servicios de terceros: todo ocurre entre tu tienda y tu cliente a través de los correos electrónicos estándar de WordPress.

Añade una sección a tu política de privacidad que describa este almacenamiento. El plugin aporta un fragmento sugerido que puedes pegar desde «Ajustes Privacidad Guía de políticas», y los datos de desistimiento se exponen en «Herramientas Exportar datos personales» y «Herramientas Borrar datos personales», filtrados por el correo electrónico del cliente.

Soporte

¿Necesitas soporte privado o un desarrollo personalizado?

¿Necesitas ayuda individualizada, resolución de problemas prioritaria o una funcionalidad, integración o adaptaciones personalizadas creadas específicamente para tu sitio? Ofrezco soporte privado y desarrollos personalizados. Solo tienes que contactarme y decirme qué necesitas.

¿Necesitas ayuda o tienes sugerencias?

¿Te gusta el plugin? ¡Déjanos un comentario de 5 estrellas y así ayudas a que lo conozcan otros!

Acerca de AyudaWP.com

Somos especialistas en plugins de optimización de seguridad, SEO, IA y rendimiento para WordPress. Creamos herramientas que solucionan problemas reales a los propietarios de sitios WordPress manteniendo los más altos estándares de programación y requisitos de accesibilidad.

Capturas

Instalación

  1. Sube la carpeta del plugin al directorio /wp-content/plugins/
  2. Activa el plugin desde el menú Plugins de WordPress.
  3. El plugin crea una página «Derecho de desistimiento» como borrador, con una plantilla legal de muestra. Revísala desde «Páginas» y publícala: hasta entonces los clientes no pueden acceder al formulario.
  4. Ve a «Cumplimiento UE Ajustes» para configurar la dirección de correo electrónico de aviso y la página que aloja el formulario.
  5. Añade la URL de la página de desistimiento al pie de página o a la sección de enlaces legales, para que sea visible desde cualquier página de tu sitio web.

FAQ

¿Qué es el aviso armonizado de garantía legal y tengo que mostrarlo?

Es el aviso oficial de la UE sobre la garantía legal de conformidad: el que lleva el encabezado «GARANTÍA LEGAL», con el código QR y la etiqueta GARAN. El artículo 22a de la Directiva 2011/83/UE, añadido por la Directiva (UE) 2024/825, lo hace obligatorio desde el 27 de septiembre de 2026 para todo el que venda bienes a consumidores en la UE, y el Reglamento de Ejecución (UE) 2025/1960 fija su diseño. No cubre ventas B2B, servicios ni contenido digital, así que el plugin solo lo muestra cuando el carrito o el pedido contiene al menos un producto que no sea virtual.

Para webs la ley exige que aparezca en color, sin editar y en un lugar destacado, y las directrices de la Comisión añaden que debe mostrarse íntegramente, de forma legible con el tamaño de letra por defecto y con un enlace en el que se pueda hacer clic que lleve al mismo destino que su código QR. El plugin hace todo eso, en las 24 lenguas de la UE, tanto en las páginas de pago como en los correos electrónicos de confirmación de pedido.

Inicialmente desactivado en los sitios que se actualizan desde una versión anterior, con un aviso en el escritorio, porque cambia lo que ven tus clientes en el proceso de compra. Las instalaciones nuevas empiezan con él activado. Actívalo en «Cumplimiento UE Ajustes Aviso UE de garantía legal (GARAN)».

¿Muestra el plugin la etiqueta GARAN?

Todavía no, y la mayoría de las tiendas no lo necesita. GARAN es una cosa distinta del aviso: el aviso cubre la garantía legal y toda tienda que venda bienes tiene que mostrarlo, mientras que GARAN representa una garantía comercial de durabilidad que un fabricante decide ofrecer. Solo es obligatoria cuando esa garantía no le cuesta nada al consumidor, cubre todo el producto y dura más de dos años. Cuando es así, el fabricante debe usar la etiqueta y tú, como vendedor, tienes que mostrarla en los productos que la lleven, que en muchos catálogos no es ninguno.

No puede incluirse tal cual como el aviso, porque el fabricante rellena los años, la marca y el identificador del modelo. Los campos GARAN por producto son el siguiente paso de este módulo. A diferencia del aviso, la etiqueta puede mostrarse en línea en un formato anidado que se expande con el primer clic.

¿De dónde vienen los archivos del aviso y bajo qué licencia?

Son los archivos oficiales de la página de directrices de la Comisión Europea, incluidos sin modificar en assets/guarantee-notice/ con el md5 de cada uno en CHECKSUMS.txt para que puedas comprobar que no se ha tocado nada. La única excepción es el PNG en inglés: el paquete PNG de la Comisión incluye 23 idiomas y no incluye el inglés, así que ese único archivo se ha renderizado desde el PDF oficial en inglés al mismo tamaño que los otros 23, sin editar, recortar ni añadir nada. Su origen queda registrado en el mismo archivo.

© Unión Europea, 2025. Reutilizado bajo la licencia CC BY 4.0, la política de reutilización de la Comisión aplicada por la Decisión 2011/833/UE.

El aviso es demasiado grande, o demasiado pequeño, en mi proceso de compra. ¿Qué hago?

Elige otro modo de visualización en «Cumplimiento UE Ajustes Aviso UE de garantía legal (GARAN)»:

  • El aviso completo (predeterminado). La lectura que nadie discute: las directrices sí aceptan mostrarlo tras un primer clic, pero el reglamento describe ese formato anidado solo para la etiqueta GARAN.
  • Un desplegable: una línea que se expande en el aviso, con el elemento nativo <details>.
  • Ventana emergente: un botón que abre el aviso grande sobre la página. Es el indicado para columnas estrechas, como la revisión del pedido de Storefront a unos 279px, donde un aviso a ancho completo sale demasiado pequeño para leerlo.
  • Nada en el proceso de compra, para tiendas que lo colocan ellas mismas. Los correos electrónicos y el enlace del pie de página siguen funcionando.

En teléfonos, el aviso completo tiene unos 330px de ancho, por lo que la imagen siempre enlaza al archivo a tamaño completo.

El aviso dice dos años y en España la garantía legal es de tres. ¿No es un error?

El aviso dice «mínimo dos años» porque ese es el mínimo de la UE, y no se puede editar: el reglamento exige que se muestre sin alterar. España elevó la garantía legal de los bienes nuevos a tres años desde la entrega (art. 120.1 TRLGDCU), así que el plugin imprime una línea breve junto al aviso, nunca dentro de él, con un enlace a tu página de términos y condiciones y, si escribes el id de su encabezado en los ajustes, a la sección exacta. Automático cuando el país base de tu WooCommerce es España, y forzable en ambos sentidos para tiendas que venden a España desde otros países. Los bienes de segunda mano pueden tener un plazo más corto, nunca inferior a un año, y el aviso oficial ya lo indica.

¿Puedo publicar el aviso en su propia página o enlazarlo desde mi pie de página?

Sí. Pon [ayudawp_guarantee_notice] en una página para el aviso completo (mode="details" o mode="popover" para los otros dos), selecciona esa página en los ajustes, y [ayudawp_guarantee_link] te da un enlace permanente a ella, exactamente igual que [ayudawp_withdrawal_link] lo hace para la página de desistimiento. Ambos aceptan text y class.

También puedes sustituir el archivo incluido por idioma desde tu biblioteca de medios, en la misma sección de ajustes, por ejemplo para servirlo desde tu propia CDN. Lo que elijas se muestra sin editar, así que tiene que ser el aviso oficial en ese idioma, en color y completo.

¿En qué idioma se muestra el aviso?

En el idioma de la página, y en el idioma del pedido para los correos electrónicos, en tiendas que usen WPML o Polylang. La Comisión lo publica en los 24 idiomas oficiales de la UE; una tienda en un idioma que no sea uno de ellos recibe el idioma oficial de su propio estado miembro, así que el catalán, el euskera y el gallego reciben el aviso en español y el luxemburgués el francés. Cualquier otro caso recurre al idioma que elijas en los ajustes. Los filtros ayudawp_euw_guarantee_fallback_lang y ayudawp_euw_guarantee_language_aliases cambian ambas reglas.

WooCommerce genera su propia página de desistimiento. ¿Sigue siendo necesario este plugin?

Resuelven mitades distintas de la misma obligación: la funcionalidlad nativa es un formulario, y este plugin es el conjunto de herramientas que lo rodea.

WooCommerce 11.1 añadió order_withdrawal (desactivado por defecto, en «WooCommerce > Ajustes > Avanzado > Características»): un formulario público en dos pasos en su propia URL en «Mi cuenta», con una pantalla de revisión y un correo electrónico de acuse de recibo. Lo que no hace es enlazar ese formulario desde ningún sitio: ni entrada en «Mi cuenta», ni botón en la fila del pedido, ni línea en los correos electrónicos transaccionales, ni enlace en el pie de página, que es de lo que trata realmente el artículo 11a. Tampoco guarda ningún registro con el que puedas trabajar (sin estados, sin notas, sin exportación), y no sabe nada de las excepciones del artículo 16, los consentimientos del proceso de compra, el modelo del anexo I.B, el plazo de cada pedido ni el aviso de garantía legal.

Con ambos activados, tu tienda responde con dos formularios en dos direcciones, cada uno con su propio registro y enviando su propio acuse de recibo, y nada los fusiona. La página de ajustes te avisa cuando ocurre. Quédate con uno de los dos.

¿Pueden los clientes ver qué ha ocurrido con una solicitud que hayan enviado?

Sí, en sitios con WooCommerce y para clientes con una cuenta. «Mi cuenta Derecho de desistimiento» se abre con sus propias solicitudes: fecha, pedido, alcance, estado actual, la nota que escribes cuando la resuelves y el código de recibo. La fila de un pedido que ya tiene una solicitud muestra ese estado donde estaba el botón, y una solicitud rechazada conserva su botón «Impugnar el rechazo».

Una solicitud se lista cuando el cliente la envió con la sesión iniciada, o cuando está vinculada a uno de sus propios pedidos. La dirección de la cuenta deliberadamente no se usa: WooCommerce permite a un cliente cambiarla sin confirmar la nueva, así que listar por dirección expondría solicitudes enviadas como invitado desde cualquier dirección sin cuenta. Para los invitados, el rastro es el acuse de recibo y los correos electrónicos de estado, que es el soporte duradero que exige la directiva. Puedes desactivar todo esto en «Cumplimiento UE Ajustes Generales».

¿Puedo mover las casillas de consentimiento la página de finalizar compra a otro sitio?

Sí, con ayudawp_euw_consent_hook, pero lee primero las ventajas e inconvenientes. Se muestran en woocommerce_after_order_notes, en la columna de datos del cliente, que WooCommerce muestra una sola vez y no vuelve a modificar. El panel de revisión del pedido, junto a la aceptación de las condiciones, parece el lugar más lógico, pero WooCommerce lo vuelve a mostrar cada vez que se actualiza mediante AJAX, por lo que una casilla de selección colocada allí se duplica y pierde lo que el cliente ya había marcado cada vez que cambia la dirección, el envío o el pago.

add_filter( 'ayudawp_euw_consent_hook', function () { return 'woocommerce_review_order_before_submit'; } );

Devolver una cadena vacía suprime la representación por completo. ayudawp_euw_consent_applies decide por carrito y ayudawp_euw_consent_is_required hace que cualquiera de los dos sea obligatorio.

¿El formulario verificará el plazo de 14 días?

No rechaza automáticamente por ello. El plazo legalmente empieza a contar desde la entrega (o, para contenido digital, desde el inicio de la descarga), una fecha que la tienda no puede detectar, así que rechazar por la fecha del pedido ahuyentaría a clientes que todavía están dentro de su plazo real. Las solicitudes que parecen tardías se marcan en su lugar en la notificación de administración, y tú compruebas la fecha de entrega real y decides.

Puedes ajustar el cálculo en «Cumplimiento UE Ajustes»: fecha del pedido o fecha de finalización como base, más días de gracia. Si tu fecha de inicio es fiable (servicios, contenido digital, recogida en tienda), cambia la aplicación del plazo de orientativa a estricta y las solicitudes tardías se bloquean directamente. Orientativa es la opción por defecto y la elección segura para bienes.

¿Cómo puedo marcar los productos que están excluidos del derecho de desistimiento (Artículo 16)?

Con un único desplegable de Estado de desistimiento, que se establece por categoría («Productos Categorías») o por producto (pestaña «General»). Una categoría aplica su estado a todos los productos que contiene y a sus categorías descendientes; un producto lo anula. Las cuatro opciones:

  • Estándar —El desistimiento se aplica normalmente.
  • Contenido digital (art. 16.m): excluido, y aparece una casilla de consentimiento obligatoria en el proceso de compra para cualquier carrito que lo contenga.
  • Servicio iniciado antes de tiempo (art. 14.4.a): el desistimiento sigue aplicándose, con un consentimiento opcional para que puedas cobrar un importe prorrateado.
  • Servicios con fecha determinada (art. 16.l): alojamiento, transporte, alquiler de coches, restauración, ocio: excluidos, no se necesita consentimiento.
  • Otra excepción del artículo 16: perecederos, hechos a medida, precintados por higiene, soportes precintados: excluidos, no se necesita consentimiento.

Una solicitud sobre un pedido que contiene artículos excluidos se marca para tu revisión, nunca se rechaza automáticamente, porque una retirada parcial del resto del pedido aún puede ser válida. Un pedido que solo contiene productos excluidos no muestra ni el botón de retirada ni el aviso en sus correos electrónicos, y un pedido que mezcla ambos nombra los excluidos en ese aviso. Desmarca Pedidos con productos excluidos en Estados de pedido elegibles si también concedes la retirada en productos excluidos. Si el Aviso de productos excluidos está activado, también aparece un aviso configurable en la página de producto entre el precio y añadir al carrito.

El aviso de producto excluido no aparece en mi maquetador de páginas (Divi, Elementor, Bricks…), ¿qué puedo hacer?

Los maquetadores de páginas como Divi, Elementor, Bricks o ShopLentor generan su propia plantilla de producto individual y no utilizan el gancho estándar de WooCommerce (woocommerce_single_product_summary), donde el plugin inserta el aviso de producto excluido, por lo que este no aparece automáticamente. Inserta el shortcode [ayudawp_withdrawal_excluded_notice] en el diseño de tu producto (la mayoría de los maqueradores cuentan con un elemento «Shortcode») y el aviso se mostrará para el producto actual siempre que dicho producto esté marcado como excluido. Si no se especifican atributos se aplica al producto que se está viendo (pasa id=«123» para seleccionar un producto específico).

¿Cómo funcionan las casillas de consentimiento en la página de finalización de la compra (art. 16, letra m), y art. 14, apartado 4, letra a))?

El plugin los inyecta cuando el carrito contiene productos marcados para ellos:

  • Tipo A (obligatorio, art. 16, letra m)), contenidos digitales. El cliente debe aceptarlo para completar el pedido, y si no se registra dicha aceptación, conserva el derecho de desistimiento de 14 días incluso después de haber accedido al contenido.
  • Tipo B (opcional, art. 14.4.a), servicios iniciados dentro del plazo. Aceptado, te permite cobrar un importe prorrateado si el cliente se arrepiente después. Sin él, un desistimiento anticipado implica un reembolso completo.

Cada marca se establece por producto o por categoría, con herencia de subcategorías. El texto exacto mostrado, el estado aceptado o rechazado, la marca de tiempo, la IP y el agente de usuario se guardan en el pedido como prueba y se muestran en el metabox de cada solicitud. Ambas se pueden desactivar y su texto se puede editar en «Cumplimiento UE Ajustes Consentimiento en el proceso de compra».

Vendo a negocios (B2B), ¿puedo excluirles del derecho de desistimiento?

El derecho de desistimiento protege a los consumidores (personas físicas que actúan al margen de su actividad comercial o profesional), no a los compradores comerciales, pero el plugin nunca decide eso por ti. Activa «Auto-declaración como consumidor» en «Cumplimiento UE Ajustes Formulario público de desistimiento» y el formulario mostrará una casilla de selección obligatoria en la que el comprador declara que ha realizado la compra como consumidor, mientras que una empresa que no pueda declararlo quedará excluida automáticamente, y la declaración se almacenará junto con la solicitud como prueba. Está desactivado por defecto. Utiliza el atributo consumer_check=«yes» del shortcode para activarlo en una página de destino específica, o el filtro ayudawp_euw_show_consumer_check para aplicar una lógica personalizada (validación VIES, un campo de tipo de cliente, etc.).

¿Incluye el plugin el modelo de formulario de desistimiento del anexo I.B requerido por la Directiva 2011/83/UE?

Sí, se crea a partir del nombre de tu tienda, la dirección (de WooCommerce cuando esté disponible), el correo electrónico de contacto y un teléfono opcional. Aparece como un bloque plegable debajo del formulario público, con una vista imprimible. Facilitarlo es un deber precontractual conforme al art. 6(1)(h) de la Directiva 2011/83/UE, que la función en línea no sustituye.

La página de desistimiento cita la Directiva 2011/83/UE. ¿No es la nueva ley la Directiva 2023/2673?

Ambas son correctas. La Directiva 2023/2673 lleva en su título los servicios financieros, pero también añade el artículo 11a a la Directiva 2011/83/UE, y ese artículo obliga a toda tienda en línea a ofrecer la función de desistimiento a partir del 19 de junio de 2026. El derecho en sí, sus 14 días y sus excepciones siguen procediendo de la 2011/83/UE.

Los servicios financieros contratados a distancia siguen sus propias normas, así que la página de muestra les dedica una sección aparte: elimínala si no los ofreces. El plugin no cubre la información precontractual que exigen esos contratos.

¿Qué es el código de verificación de la recepción que aparece en el correo electrónico del cliente?

Se trata de un hash SHA-256 calculado a partir de los datos de la solicitud (ID de la publicación, nombre del cliente, correo electrónico, referencia del pedido, ámbito, fecha del pedido y marca temporal de envío). El cliente conserva el correo electrónico como evidencia a prueba de manipulaciones en un medio duradero. Si más adelante surge una disputa, puedes volver a calcular el hash a partir de los campos almacenados con la función auxiliar ayudawp_euw_compute_receipt_hash() y confirmar que el envío original no fue alterado.

¿Puedo elegir quién puede gestionar las solicitudes de desistimiento?

Sí, desde «Cumplimiento UE Ajustes Permisos»: las solicitudes contienen datos personales, así que eliges qué perfiles además del administrador pueden gestionarlas. Las instalaciones nuevas empiezan solo con el administrador; los sitios actualizados desde una versión anterior conservan los perfiles que ya tenían acceso hasta que los desmarques.

¿Es compatible con HPOS (High-Performance Order Storage)?

Sí. El plugin declara su compatibilidad con HPOS al cargarse.

¿El plugin funciona sin WooCommerce?

Sí. El formulario, el shortcode, el registro de solicitudes, los correos electrónicos, el hash del acuse de recibo, el anexo I.B y las herramientas del RGPD funcionan por su cuenta, bajo un menú «Desistimientos». Con WooCommerce activo también obtienes la validación de pedidos, el punto de conexión de «Mi cuenta», el aviso en los correos electrónicos de pedido, la columna de pedidos, las notas del pedido y las exclusiones del artículo 16. Activar o desactivar WooCommerce más adelante deja intactas las características independientes.

¿Funciona con plugins que modifican el número de pedido de WooCommerce (números de pedido secuenciales, números de pedido personalizados, etc.)?

Sí. El formulario admite tanto el ID interno del pedido de WooCommerce como el número de pedido que se muestra. El sistema de resoluciones comprueba una lista de claves meta conocidas: las estándar _order_number y _order_number_formatted (WooCommerce Sequential Order Numbers, versión gratuita y Pro), además de _alg_wc_full_custom_order_number y _alg_wc_custom_order_number (Tyche / WPFactory «Custom Order Numbers for WooCommerce»). Añade otros plugins de numeración con el filtro ayudawp_euw_order_number_meta_keys. Para esquemas calculados en tiempo real (por ejemplo, YITH Sequential Order Number o integraciones personalizadas), puentea la búsqueda con el filtro ayudawp_euw_pre_resolve_wc_order.

El formulario indica que no puede asociar la dirección de correo electrónico con el número de pedido. ¿Puedo aceptar esas solicitudes de todos modos?

Sí, mediante la opción «Aceptar solicitudes sin coincidencia» en Cumplimiento UE Configuración Estados de pedido elegibles. Por defecto, el formulario rechaza cualquier envío cuyo número de pedido y correo electrónico no coincidan con ningún pedido. Si la opción está activada, se registra de todos modos y se marca como «No verificado»: el cliente ve un aviso en el que se le invita a comprobar la referencia y aún puede confirmarlo, y la solicitud aparece resaltada en el correo electrónico de notificación, en la lista y en su pantalla de detalles, para que puedas verificarla con tus registros antes de tomar una decisión. Las solicitudes no verificadas nunca se vinculan a un pedido, y se envía igualmente el acuse de recibo. Desactivada por defecto.

Un pedido sin correo electrónico de facturación, como un pedido por teléfono introducido a mano, no da al formulario nada con lo que comprobar. Sus solicitudes siempre se registran como no verificadas, incluso con la opción desactivada, y el pedido solo se te sugiere cuando la fecha del pedido que indica el cliente coincide.

El formulario dice que la solicitud ya no está a la espera de confirmación, antes de que la envía el cliente. ¿A que es debido?

La declaración espera en el servidor, en un transitorio de un solo uso de 15 minutos, entre el formulario y la pantalla de revisión. Una caché de objetos que descarta los transitorios (un plugin dependiente de Redis o Memcached mal configurado, o un plugin que los vacía) la pierde antes de que el cliente confirme. Desactiva la caché de objetos un momento y envía de nuevo: si funciona, corrige la configuración de la caché.

¿Aparecerá el aviso en todos los correos electrónicos de WooCommerce?

No. El aviso se incluye en el correo electrónico que WooCommerce envía al cliente para cada estado de pedido marcado en Cumplimiento UE Ajustes Estados de pedido elegibles: «Procesando» y «Completado» por defecto, además de «En espera» o «Reembolsado» si los marcas. Lo mismo ocurre con el correo electrónico de la factura manual, para los pedidos que se encuentren en esos estados. Los correos electrónicos del administrador nunca lo reciben. Modifica la lista de destinatarios con el filtro ayudawp_euw_email_ids y la lista de estados con ayudawp_euw_allowed_statuses.

¿Puedo hacer que el aviso de desistimiento que aparece en los correos electrónicos sea más discreto?

Sí. Devuelve un array vacío desde el filtro ayudawp_euw_email_ids para eliminar el bloque de aviso (encabezado, texto y botón) de todos los correos electrónicos de pedido:

add_filter( 'ayudawp_euw_email_ids', '__return_empty_array' );

El botón «Mi cuenta», el formulario público y el enlace del pie de página siguen funcionando, por lo que la función de cancelación sigue estando disponible, tal y como exige el artículo 11a. A continuación, puedes añadir tu propio texto en el campo «Contenido adicional» de WooCommerce para cada correo electrónico (WooCommerce Ajustes Correos electrónicos). Dirígelo a tu página de desistimiento y añade el marcador de posición {order_number} para que el pedido aparezca ya rellenado; por ejemplo, .../withdrawal/?order_id={order_number}. Mantén alguna referencia en la confirmación del pedido: se trata de la confirmación del contrato en un soporte duradero, por lo que la información sobre el desistimiento debe seguir siendo accesible desde ella, aunque no necesariamente mediante un botón destacado.

¿Funciona en sitios multilíngües (WPML, Polylang)?

Sí. El estado de desistimiento se configura una sola vez, en el producto o la categoría en el idioma original de la web, y se aplica a todas las traducciones: el aviso de productos excluidos, los consentimientos durante el proceso de pago y los artículos excluidos del pedido se remiten siempre al original. No obstante, si existe un estado explícito en una traducción, este prevalece. Los enlaces a la página de desistimiento se adaptan al idioma del visitante siempre que exista una traducción, al igual que el aviso sobre la garantía.

El archivo wpml-config.xml incluido convierte los ajustes que contienen el texto dirigido al cliente en cadenas traducibles en WPML Traducción de cadenas o Idiomas Traducciones. Un ajuste aparece allí una vez que escribes tu propio texto en él: si se deja vacío, el texto procede del paquete de idioma de cada configuración regional y ya se adapta al visitante.

El acuse de recibo adopta el idioma de la página desde la que el cliente envió el formulario, siempre que dicho idioma forme parte de la URL. El aviso a la tienda, el título de la solicitud y la nota del pedido se mantienen en el idioma por defecto del sitio web. Una limitación es que los correos electrónicos de cambio de estado (aceptado, rechazado, completado) siguen redactándose en el idioma por defecto del sitio web, aunque está previsto implementar el idioma específico de cada cliente en el futuro. Los avisos que se incluyen en los correos electrónicos de pedido de WooCommerce, tanto los de desistimiento como los de garantía, siguen el idioma del pedido.

¿Cumple el plugin con los requisitos del RGPD?

Solicita la aceptación explícita de tu política de privacidad, almacena la IP y el agente de usuario solo para la trazabilidad legal de la solicitud y se integra en las herramientas de privacidad de WordPress. La sección «Privacidad» de arriba enumera los campos almacenados y esas herramientas.

¿Qué pasa si el cliente borra su cuenta de usuario de WordPress?

Nada: el registro se indexa por el correo electrónico del cliente, no por la cuenta de usuario. Para eliminar sus solicitudes, usa «Herramientas Borrar datos personales» con ese correo electrónico, o borra las entradas a mano si tu política de conservación lo exige.

¿Puedo personalizar los correos electrónicos?

Sí. Desde «Cumplimiento UE Ajustes Correos electrónicos de desistimiento» puedes configurar el remitente («Nombre del remitente» y «Dirección del remitente») para los correos electrónicos del plugin y modificar el cuerpo de los correos de los estados de aceptado, rechazado y completado (si se dejan en blanco, cada texto se sustituye por el valor por defecto incluido). El aviso al administrador se puede personalizar con el filtro ayudawp_euw_admin_email_lines, y todas las cadenas siguen siendo traducibles a través del dominio de texto estándar de WordPress. Los correos electrónicos se envían en texto sin formato y está previsto incluir plantillas HTML que hereden el tema de correo electrónico de WooCommerce en una versión posterior.

¿Qué ganchos ofrece el plugin a los desarrolladores?

21 filtros y 4 acciones. El lado de la retirada: ayudawp_euw_grace_days (extra days on the deadline), ayudawp_euw_allowed_statuses (order statuses that get the button and the notice), ayudawp_euw_show_withdrawal (hide both for specific orders, or bring them back on an order that only holds excluded products), ayudawp_euw_email_ids (emails carrying the withdrawal notice), ayudawp_euw_allow_unverified_order, ayudawp_euw_pre_resolve_wc_order and ayudawp_euw_resolve_wc_order (short-circuit or audit the order resolver), ayudawp_euw_order_number_meta_keys (meta keys checked when matching a typed order number), ayudawp_euw_admin_email_lines, ayudawp_euw_validation_result (reject a submission, for a captcha), ayudawp_euw_form_via_admin_post (send the form through admin-post.php again) and ayudawp_euw_show_consumer_check. The checkout consents: ayudawp_euw_consent_hook, ayudawp_euw_consent_hook_priority, ayudawp_euw_consent_applies and ayudawp_euw_consent_is_required. The guarantee notice: ayudawp_euw_guarantee_email_ids, ayudawp_euw_guarantee_notice_html, ayudawp_euw_guarantee_image_id, ayudawp_euw_guarantee_fallback_lang and ayudawp_euw_guarantee_language_aliases.

Acciones: ayudawp_euw_after_submission (ID de CPT, datos de envío), ayudawp_euw_after_status_change (ID de CPT, nuevo estado, comentario), ayudawp_euw_after_form (dentro del contenedor del formulario, después de </form>) y ayudawp_euw_form_before_submit (antes del botón de envío, para un captcha o un campo adicional).

ayudawp_euw_skip_deadline_check is kept for back-compat and has no effect: the deadline is advisory and gates nothing.

¿Es suficiente este plugin para cumplir con la Directiva de la UE 2023/2673?

Cubre los requisitos funcionales que la directiva impone en toda la UE a partir del 19 de junio de 2026: una función de desistimiento digital fácilmente localizable, la elegibilidad en función del estado del pedido con un indicador de plazo de aviso, las exclusiones del artículo 16 en caso de herencia, la prueba duradera mediante el hash SHA-256 del recibo, el formulario modelo del anexo I.B y los dos consentimientos en el proceso de pago. Añade las herramientas operativas que la directiva no exige, pero que hacen que las solicitudes sean viables, así como el aviso de garantía armonizado que pasará a ser obligatorio en septiembre.

Los estados miembros pueden añadir requisitos nacionales adicionales: la confirmación en dos pasos que exigen los más estrictos ya está integrada. El cumplimiento normativo depende, en última instancia, de tu modelo de negocio, tu catálogo y tu jurisdicción. El plugin proporciona los elementos básicos, pero no asesoramiento jurídico. Consulta a un especialista en derecho del consumidor para tu caso concreto.

¿Este plugin está relacionado con la Directiva Ómnibus de la UE?

En parte. Este plugin implementa los requisitos relativos al derecho de desistimiento de la Directiva 2011/83/UE sobre los derechos de los consumidores, una de las directivas modificadas por la Directiva (UE) 2019/2161 (la Directiva Ómnibus).

No cubre otras obligaciones derivadas de la Directiva Ómnibus, como mostrar el precio más bajo de los últimos 30 días en las rebajas o verificar las opiniones de los clientes. Esos requisitos requieren soluciones específicas.

Reseñas

9 de agosto de 2026 1 respuesta
The plugin is comprehensive and seems to cover all the options. Fernando's support is legendary! He's been so helpful, open to suggestions and proactive in solving issues and offering solutions.
30 de julio de 2026 1 respuesta
This plugin is incredible. All the features you need completely free. And it is getting better and better. I recommend it.
30 de junio de 2026 1 respuesta
Facilita cumplir con la normativa de desestimiento de forma muy sencilla y a pesar de ser un plugin gratuito el soporte es muy rápido y eficiente.
25 de junio de 2026 1 respuesta
Este plugin merece mucho más que cinco estrellas. Resulta admirable y muy de agradecer que su autor dedique tiempo y esfuerzo en una herramienta gratuita, muy fácil de configurar y que cumple de maravilla con la legislación. No dudes en instalarlo, que funciona perfectamente y te va a ahorrar posibles problemas. Un millón de gracias, Fernando.
Leer todas las 17 reseñas

Colaboradores y desarrolladores

«Cumplimiento del desistimiento y garantía legal de la UE» es un software de código abierto. Las siguientes personas han colaborado con este plugin.

Colaboradores

«Cumplimiento del desistimiento y garantía legal de la UE» está traducido en 4 idiomas. Gracias a los traductores por sus contribuciones.

Traduce «Cumplimiento del desistimiento y garantía legal de la UE» a tu idioma.

¿Interesado en el desarrollo?

Revisa el código , echa un vistazo al repositorio SVN o suscríbete al registro de desarrollo por RSS.

Registro de cambios

2.3.3

Las instalaciones nuevas crean la página de desistimiento como borrador y ocultan los enlaces a una página no publicada. Las solicitudes de pedidos sin correo electrónico de facturación ya no se vinculan al pedido. También avisa sobre consentimientos de finalización de la compra que no coinciden con tus productos.

  • Mejorado: En una instalación nueva, la página de desistimiento se crea como borrador para que puedas revisar su texto de muestra antes de que los clientes lo vean. Hasta que se publica la página permanece un aviso en el escritorio, y el aviso de activación y la advertencia de página en los ajustes explican por qué es un borrador.
  • Mejorado: Mientras la página de desistimiento no esté publicada el plugin omite todos los enlaces a ella (el aviso y el botón en los correos electrónicos de WooCommerce, el botón de desistimiento para invitados, el shortcode [ayudawp_withdrawal_link], el enlace en el aviso de producto excluido y el formulario modelo imprimible) en lugar de dirigir a los clientes a una página que no pueden abrir. A un invitado se le da el correo electrónico de contacto de la tienda en su lugar. Esto también se aplica a los sitios cuya página de desistimiento ya estaba sin publicar. En sitios multilingües, una traducción que no está publicada recurre al original publicado.
  • Mejorado: La página de desistimiento de muestra ahora cita la Directiva 2011/83/UE y su artículo 11a como fuente del derecho, en lugar de citar solo la Directiva 2023/2673, y tiene una sección aparte para los servicios financieros contratados a distancia. Las páginas existentes no se modifican.
  • Mejorado: Los ajustes de consentimiento de la finalización de la compra avisan cuando un consentimiento está desactivado mientras algunos productos o categorías siguen usando el estado de retirada que lo necesita, e indican cuándo un consentimiento activado no lo usa ninguno.
  • Mejorado: Cuando el campo de correo electrónico de contacto del anexo I.B está vacío, los ajustes indican la dirección que se está mostrando a los clientes en su lugar (la primera dirección de notificación o el correo electrónico de administración del sitio) para que puedas decidir si rellenarlo.
  • Mejorado: Después de enviar una solicitud, el cliente ve qué ocurre a continuación: el acuse de recibo que debe guardar, los correos electrónicos que seguirán, el enlace para seguirla en su cuenta cuando tiene una y el correo electrónico de contacto de la tienda.
  • Mejorado: Probado hasta WooCommerce 11.2.
  • Corrección: Una solicitud sobre un pedido sin correo electrónico de facturación, como un pedido por teléfono introducido a mano, se vinculaba a ese pedido solo con escribir su número, y el formulario podía decir a quien lo escribiera si ese pedido ya tenía una solicitud abierta. Ahora se registra como no verificada y no se vincula, incluso con «Aceptar solicitudes no coincidentes» desactivado, y el pedido solo se te sugiere cuando la fecha del pedido que indica el cliente coincide, con un margen de aproximadamente un día. Esa solicitud ya no aparece en la columna «Desistimiento» del pedido ni bloquea una segunda: la resuelves desde su pantalla de detalles.
  • Corrección: Un número de pedido que contenía «#» o «&» rompía los enlaces precargados al formulario de retirada, en la cuenta del cliente y en los correos electrónicos de pedido.
  • Corrección: En sitios en un idioma de derecha a izquierda (árabe, hebreo, persa), la página con el formulario de desistimiento se podía desplazar lateralmente unos 10.000 píxeles, empujada por el campo anti-spam oculto, y los botones y bordes de aviso quedaban en el lado equivocado. Los estilos en la parte visible de la web ahora usan propiedades lógicas.
  • Corrección: Los ajustes de consentimiento de la finalización de la compra describían una forma anterior de elegir los productos a los que se aplica cada consentimiento y nombraban una versión pasada del plugin.

2.3.2

Los pedidos que solo contienen productos excluidos del derecho de retirada ya no muestran el botón de retirada ni el aviso en sus correos electrónicos, y los pedidos mixtos nombran los excluidos. También corrige el botón de retirada que enviaba a los invitados a la pantalla de acceso.

  • Mejora: Un pedido que solo contiene productos excluidos del derecho de retirada (Artículo 16) ya no muestra el botón de retirada en la cuenta del cliente ni el aviso en sus correos electrónicos de WooCommerce. Hasta ahora ambos aparecían en cada pedido elegible, por lo que a un cliente que solo había comprado productos excluidos se le decía que tenía 14 días para retirarse. El formulario de retirada sigue aceptando una solicitud para cualquier pedido y lo marca para tu revisión, como antes. Activado por defecto: desmarca «Pedidos con productos excluidos» en «Estados de pedido elegibles» si también concedes la retirada en productos excluidos.
  • Mejora: en un pedido que mezcla productos excluidos y normales, el aviso en los correos electrónicos de WooCommerce ahora nombra los productos a los que no se aplica el derecho de retirada.
  • Mejora: El filtro ayudawp_euw_show_withdrawal ahora puede volver a mostrar el botón y el aviso en un pedido que solo contenga productos excluidos. Sigue sin poder ofrecerlos en un pedido con un estado que hayas omitido, o pasado el plazo en modo estricto.
  • Corregido: en la página de pedido recibido y en la página de seguimiento de pedidos, el botón «Retirarse del pedido» enviaba a un visitante sin sesión a la pantalla de acceso de Mi Cuenta, un callejón sin salida para cualquiera que haya comprado como invitado. Ahora abre el formulario de retirada con el número de pedido ya rellenado, el mismo enlace que llevan los correos electrónicos de pedido. Si no hay ninguna página de retirada configurada, se le da al visitante el correo electrónico de contacto de la tienda.
  • Corregido: en los correos electrónicos de pedido en texto plano, el apóstrofo del aviso de retirada o del aviso de garantía legal se eliminaba, por lo que una traducción como «l’ordine» llegaba como «lordine».
  • Corregido: guardar la página de ajustes con WooCommerce desactivado desactivaba o vaciaba todos los ajustes cuyo campo solo se muestra con WooCommerce activo: los estados de pedido elegibles, el estado en la cuenta del cliente, aceptar solicitudes no coincidentes, ambos consentimientos de finalizar compra y sus textos, el aviso de productos excluidos y sus textos, y la nota del pedido y el archivo adjunto PDF del aviso de garantía legal. Ahora conservan sus valores. La versión 2.3.1 solo había protegido la lista de correos electrónicos que llevan el aviso de garantía.

2.3.1

El formulario de desistimiento se publica ahora en su propia página, por lo que los plugins que bloquean el acceso a wp-admin a los visitantes o clientes ya no pueden ocultarlo. Además: una solicitud abierta por cada pedido completo, la confirmación en el idioma del cliente y correcciones en el aviso de garantía y la exportación a CSV.

  • Mejorado: En sitios multilingües (WPML, Polylang), el acuse de recibo se muestra ahora en el idioma de la página desde la que el cliente ha enviado el formulario, siempre que dicho idioma forme parte de la URL, que es la configuración habitual en ambos. El aviso a la tienda, el título de la solicitud en el registro y la nota del pedido se mantienen en el idioma por defecto del sitio. Hasta ahora, los cuatro elementos se mostraban en el idioma por defecto.
  • Mejorado: Una solicitud ya no se registra de nuevo mientras haya otra pendiente o aceptada para todo el pedido. Se informa al cliente de que ya se está tramitando y de que la forma de añadir productos es respondiendo al acuse de recibo. Una solicitud parcial nunca retrasa una posterior, por lo que retirar algunos productos ahora y otros más adelante funciona como antes, y una solicitud rechazada aún puede recurrirse.
  • Mejorado: El aviso de desistimiento en los correos electrónicos de WooCommerce ahora se ajusta a los estados marcados en «Estados de pedido elegibles». Antes, al marcar «En espera», se mostraba el botón en «Mi cuenta», pero no se incluía el aviso en el correo electrónico de «En espera», que es el primero que recibe un cliente que paga mediante transferencia bancaria. Si tienes marcados «En espera» o «Reembolsado», a partir de esta versión esos correos electrónicos incluirán el aviso.
  • Mejorado: El aviso del escritorio que te invita a activar el aviso de garantía legal ya no aparece en las tiendas que no ofrecen productos físicos, a las que dicho aviso no se aplica. La sección de ajustes también lo indica, en lugar de dejarte con la duda de por qué no aparece nada en la página de pago.
  • Mejorado: Dos filtros para desarrolladores. ayudawp_euw_show_withdrawal oculta el botón de desistimiento y el aviso por correo electrónico en pedidos específicos, por ejemplo, un curso que comienza una vez finalizado el plazo de desistimiento. ayudawp_euw_form_via_admin_post vuelve a enviar el formulario a través de admin-post.php, en caso de que algún elemento de la interfaz del sitio rechace una solicitud POST dirigida a una página pública.
  • Corrección: El formulario de desistimiento no superaba el primer paso en sitios en los que otro plugin impedía a los visitantes o clientes acceder a wp-admin (se había informado de este problema con Profile Builder de JetEngine y con WP Cerber). Se enviaba a admin-post.php, donde era interceptado, y el cliente acababa en la página de inicio sin que se registrara nada. Ahora el formulario se envía a su propia página, fuera del alcance de cualquier elemento que proteja wp-admin. Las páginas almacenadas en caché con el formulario antiguo siguen funcionando. Si tienes un cortafuegos o una regla de limitación de tráfico que se aplica a admin-post.php para este formulario, redirígelo a la página que contiene el formulario. El código asociado a las acciones admin_post_ayudawp_euw_review o admin_post_ayudawp_euw_confirm ya no se ejecuta, y ayudawp_euw_validation_result ocupa su lugar.
  • Corrección: Al cerrar el aviso del escritorio sobre la garantía legal, se accedía a la página de ajustes. Ahora te queda en la pantalla en la que te encontrabas.
  • Corrección: El recordatorio que aparece debajo del selector de páginas de retirada, en el que se indica que la página aún contiene el texto de ejemplo, se mostraba en tres columnas y el enlace quedaba aislado en el centro.
  • Corrección: Con PHP 8.4 o posterior, cuando se mostraban errores en pantalla, la exportación a CSV de las solicitudes de retirada incluía un aviso de obsolescencia dentro del archivo. Ahora, un campo que contenga una barra invertida justo antes de una comilla también se escribe tal y como lo interpretan las hojas de cálculo.
  • Corrección: Al guardar la página de ajustes mientras WooCommerce estaba desactivado, se vaciaba la lista de correos electrónicos de pedidos que incluyen el aviso sobre la garantía legal.

2.3.0

Nuevo módulo para el aviso armonizado de garantía legal de la UE, obligatorio desde el 27 de septiembre de 2026: aviso legal en 24 idiomas en el pago y correos de los pedidos, con el PDF adjunto. Inicialmente desactivado, con un aviso en tu escritorio para activarlo.

  • Nuevo: el aviso armonizado de la UE sobre la garantía legal de conformidad, que el artículo 22a de la Directiva 2011/83/UE (añadido por la Directiva (UE) 2024/825) hace obligatorio desde el 27 de septiembre de 2026, con el diseño fijado por el Reglamento de Ejecución (UE) 2025/1960. El plugin incluye el archivo oficial en los 24 idiomas de la UE y lo muestra sin editar, tal como exige el reglamento: encima del botón de realizar el pedido tanto del proceso de compra clásico como del de bloques, y en los correos electrónicos del pedido del cliente con el PDF oficial adjunto, que es lo que llega al cliente cuando su cliente de correo bloquea imágenes remotas. El pie de imagen enlaza a la página de garantías de Your Europe en su idioma, el destino del código QR impreso en el aviso. Solo se muestra cuando el carrito o el pedido contiene bienes, porque el aviso no se aplica a servicios ni a contenido digital.
  • Nuevo: tres modos de visualización para el aviso, más la opción de colocarlo tú mismo. El aviso completo de forma predeterminada, que es la lectura que nadie discute; un desplegable nativo; y un popover nativo que lo abre grande sobre la página, para columnas estrechas del proceso de compra como la revisión del pedido de Storefront, donde un aviso a ancho completo sale demasiado pequeño para leerlo. Los tres están construidos con HTML simple, sin JavaScript, por lo que también funcionan dentro del proceso de compra de bloques.
  • Nuevo: la nota española de los tres años. El aviso oficial dice «mínimo dos años» porque ese es el mínimo de la UE y no se puede editar, mientras que España elevó la garantía legal de los bienes nuevos a tres años desde la entrega (art. 120.1 TRLGDCU). El plugin imprime esa diferencia junto al aviso, nunca dentro de él, con un enlace a tu página de términos y condiciones y, si quieres, a la sección exacta de la misma. Automático cuando el país base de tu tienda es España, y forzable en ambos sentidos.
  • Nuevo: una página «Garantía legal» propia, con el shortcode [ayudawp_guarantee_notice] para el aviso completo y [ayudawp_guarantee_link] para un enlace permanente a ella desde tu pie de página, el mismo par que ya tenía la página de desistimiento. Además, una nota privada del pedido que registra el idioma y el modo de visualización del aviso que se le mostró a cada comprador, que es lo que te permite responder a una inspección sobre un pedido realizado hace meses.
  • Nuevo: cinco filtros para desarrolladores para el aviso: los correos electrónicos que lo llevan, su marcado, el archivo de la biblioteca de medios servido en lugar del incluido, el idioma de reserva y el mapa de idiomas sin archivo oficial. La pantalla de ajustes también te permite sustituir el archivo incluido por idioma desde tu biblioteca de medios.
  • Mejorado: en un sitio que se actualiza desde una versión anterior, el módulo llega desactivado y lo indica en el escritorio con un botón que lo activa. Cambia lo que ven tus clientes en el proceso de compra, que no es una decisión que deba tomarse en nombre de otro mientras no mira. Las instalaciones nuevas empiezan con él activado.
  • Mejorado: el plugin ahora ocupa unos 5 MB, frente a los 560 KB anteriores, porque el aviso oficial se incluye en 24 idiomas como imagen y como PDF. No se descarga nada en tiempo de ejecución y nada sale de tu servidor: el reglamento no permite alterar los archivos, así que viajan tal como los publica la Comisión.
  • Mejorado: el menú de administración ahora se llama Cumplimiento UE, con un nuevo icono. Antes se llamaba Desistimientos, que nombraba la mitad de lo que hace el plugin ahora que el aviso de garantía legal cuelga del mismo menú. Dentro, todo conserva su nombre: Desistimientos para la lista de solicitudes, Ajustes y Exportar desistimientos.
  • Mejorado: plugin renombrado a EU Withdrawal and Legal Guarantee Compliance. Cubría una directiva y ahora cubre dos, y el antiguo nombre no decía nada sobre la mitad que pasa a ser obligatoria en septiembre. Nada se mueve: mismo slug, misma carpeta, mismos ajustes y mismas traducciones, solo el nombre que ves en la lista de plugins y en el directorio.
  • Mejorado: probado hasta WooCommerce 11.1.

Para entradas anteriores del registro de cambios revisa el archivo changelog.txt.