Polski for WooCommerce - adapta tu tienda al mercado polaco
ES

Polski for WooCommerce - adapta tu tienda al mercado polaco

5.00 /5 - (17 votes )
48min de lectura
Referencia
Experto WooCommerce
500+ proyectos WP

#Polski for WooCommerce

Plugin gratuito que adapta WooCommerce a las condiciones legales y comerciales del mercado polaco. GPSR, Omnibus, GDPR, DSA, KSeF-ready y funciones de tienda en un solo lugar.

Polski for WooCommerce reúne los requisitos del mercado polaco, las directivas europeas vigentes y las funciones de tienda en un único plugin. En lugar de instalar 10 plugins separados para gestionar precios por unidad, formularios de devolución, GPSR, DSA, datos alimentarios, auditoría de cumplimiento y herramientas de merchandising - tienes todo en un solo paquete.

El plugin está actualmente en proceso de revisión en WordPress.org. El código fuente está disponible en GitHub.

Requisitos: WordPress 6.4+, WooCommerce 8.0+, PHP 8.1+ | Versión: 1.3.0 | Licencia: GPLv2


#Índice de contenidos


#Instalación y configuración

#Primeros pasos

La configuración de Polski for WooCommerce consta de 6 pasos. La mayoría de los ajustes funcionan con los valores predeterminados - basta con activar los módulos.


#Instalación

#Desde el panel de WordPress (recomendado)

  1. Ve a Plugins > Añadir nuevo
  2. Busca Polski for WooCommerce
  3. Haz clic en Instalar y Activar
  4. El nuevo menú Polski aparecerá en la barra lateral

#Manualmente desde un archivo ZIP

  1. Descarga el ZIP desde GitHub
  2. Plugins > Añadir nuevo > Subir plugin
  3. Selecciona el archivo ZIP y haz clic en Instalar
  4. Haz clic en Activar

#Activación de módulos

Tras la activación, ve a Polski > Módulos. Verás una lista de 42 módulos disponibles agrupados por categorías:

  • Precios y Omnibus - precio por unidad, precio más bajo de los últimos 30 días, visualización del IVA
  • Checkout - botón de pedido, casillas legales, NIP
  • Cumplimiento legal - GPSR, DSA, KSeF, greenwashing, GDPR
  • Derechos del consumidor - formulario de devolución, páginas legales, ODR
  • Información de productos - tiempo de entrega, fabricante, marcas, GTIN
  • Productos alimentarios - valores nutricionales, alérgenos, Nutri-Score
  • Módulos de tienda - wishlist, comparador, quick view, filtros, buscador
  • Email - adjuntos legales, double opt-in
  • Herramientas - panel de cumplimiento, auditoría de tienda

Cada módulo tiene un interruptor de activación. Activa los que necesites.


Para el cumplimiento básico con la legislación polaca, activa:

  1. Casillas legales - ve a los ajustes del módulo, activa las casillas para los términos y condiciones, política de privacidad y derecho de desistimiento
  2. Botón de pedido - cambia automáticamente el texto a “Zamawiam z obowiązkiem zapłaty”
  3. Páginas legales - selecciona tus páginas de Términos y condiciones, Política de privacidad y Derecho de desistimiento

#Configuración del IVA

  1. Asegúrate de tener las tasas de IVA correctas en WooCommerce > Ajustes > Impuestos (23 %, 8 %, 5 %, 0 %)
  2. Activa el módulo Visualización del IVA y selecciona el modo (bruto/neto)
  3. Si aplicas exención subjetiva (art. 113) - marca la casilla correspondiente

#GPSR (si vendes productos físicos)

Desde el 13 de diciembre de 2024, el reglamento GPSR exige indicar en la página del producto los datos del fabricante y del responsable. Activa el módulo GPSR y completa los datos en la pestaña Polski del editor de producto.


#Panel de cumplimiento

Ve a Polski > Panel y haz clic en Verificar cumplimiento. El sistema comprobará:

  • Si las páginas legales están creadas y asignadas
  • Si las casillas legales están activadas en el checkout
  • Si el botón de pedido tiene el texto correcto
  • Si las tasas de IVA están configuradas
  • Si los datos GPSR están completos (si el módulo está activo)

Resultado en verde/rojo para cada punto. Corrige los elementos en rojo y vuelve a verificar.


#Plantillas del tema

Todas las plantillas del plugin pueden sobreescribirse desde el tema. Copia el archivo desde wp-content/plugins/polski/templates/ a wp-content/themes/your-theme/polski/ y edítalo.


#REST API

El plugin expone una REST API completa bajo el namespace polski/v1/:

  • GET /polski/v1/settings - obtener ajustes
  • POST /polski/v1/settings - actualizar ajustes
  • GET /polski/v1/withdrawals - lista de solicitudes de devolución
  • GET /polski/v1/checkboxes - configuración de casillas

La documentación de la API está disponible tras instalar el plugin.


#WP-CLI

wp polski migrate        # ejecutar migraciones de base de datos
wp polski smoke-test     # verificar la correcta instalación

#GPSR - seguridad general de productos

Desde el 13 de diciembre de 2024, el reglamento UE 2023/988 (GPSR - General Product Safety Regulation) exige que las páginas de producto en tiendas online incluyan los datos del fabricante y del responsable del cumplimiento normativo del producto. El módulo GPSR de Polski for WooCommerce muestra automáticamente esta información en la página del producto y proporciona herramientas para gestionarla desde el panel de administración.


#Activación del módulo

  1. Ve a Polski > Módulos
  2. Busca la sección Cumplimiento legal
  3. Activa el módulo GPSR
  4. Guarda los cambios

Tras la activación, el módulo registrará nuevos campos en el editor de producto y añadirá una columna de estado en la lista de productos.


#Campos GPSR en el editor de producto

Tras activar el módulo, en el editor de cada producto aparece la sección GPSR - Seguridad del producto (pestaña Polski). Contiene 8 campos:

CampoTipoDescripción
Nombre del fabricantetextoNombre completo de la entidad que fabricó el producto
Dirección del fabricantetextareaDirección postal completa del fabricante
Nombre del importadortextoNombre del importador (rellena si el producto proviene de fuera de la UE)
Dirección del importadortextareaDirección postal completa del importador
Persona responsabletextoEntidad en la UE responsable del cumplimiento del producto con GPSR
Identificador del productotextoNúmero de lote, número de serie u otro identificador
Advertencias de seguridadtextareaAdvertencias requeridas por la normativa o el fabricante
Instrucciones de seguridadtextareaInstrucciones para el uso seguro del producto

La sección GPSR en la página del producto se muestra únicamente cuando al menos un campo tiene contenido. Los datos se presentan en un elemento <details> con el encabezado “Seguridad del producto (GPSR)” - el clientes puede desplegarlo haciendo clic.


#Visualización en la página del producto

El módulo inyecta automáticamente la sección GPSR bajo la información del producto (hook woocommerce_product_meta_end). Muestra únicamente los campos que tienen valor.

Estructura HTML de la sección:

<div class="polski-gpsr-info">
  <details class="polski-gpsr-info__details">
    <summary class="polski-gpsr-info__summary">Bezpieczeństwo produktu (GPSR)</summary>
    <dl class="polski-gpsr-info__list">
      <dt>Producent</dt>
      <dd>Nazwa producenta</dd>
      <!-- kolejne pola -->
    </dl>
  </details>
</div>

Puedes personalizar el estilo de la sección mediante CSS en el tema, usando las clases .polski-gpsr-info, .polski-gpsr-info__details y .polski-gpsr-info__list.

Si deseas modificar el diseño o el contenido de la sección, copia la plantilla desde: wp-content/plugins/polski/templates/single-product/gpsr-info.php a: wp-content/themes/tu-tema/polski/single-product/gpsr-info.php


#Columna de estado GPSR en la lista de productos

En la lista de productos (Productos > Todos los productos) el módulo añade la columna GPSR con un indicador visual del grado de cumplimentación:

  • Marca verde (✓) - 3 o más de los 8 campos completados
  • Triángulo de advertencia amarillo - 1 o 2 campos completados
  • Guion gris - ningún campo completado

Al pasar el cursor sobre el icono aparece un tooltip con el número de campos completados, por ejemplo “5/8 campos completados”. Esto permite identificar rápidamente los productos que requieren datos GPSR sin abrir cada uno de ellos.


#Importación y exportación CSV

El módulo GPSR es totalmente compatible con el mecanismo de importación/exportación CSV de Polski for WooCommerce. Es la forma más rápida de completar datos GPSR para muchos productos a la vez.

#Exportación

  1. Ve a Polski > Importar / Exportar CSV
  2. Haz clic en Exportar productos
  3. Descarga el archivo CSV

En el archivo CSV, cada producto tiene columnas GPSR con el prefijo polski_gpsr_:

Columna CSVCampo correspondiente
polski_gpsr_manufacturer_nameNombre del fabricante
polski_gpsr_manufacturer_addressDirección del fabricante
polski_gpsr_importer_nameNombre del importador
polski_gpsr_importer_addressDirección del importador
polski_gpsr_responsible_personPersona responsable
polski_gpsr_product_identifierIdentificador del producto
polski_gpsr_safety_warningsAdvertencias de seguridad
polski_gpsr_instructionsInstrucciones de seguridad

#Importación

  1. Completa las columnas GPSR en el archivo CSV (la columna id o sku es obligatoria para identificar el producto)
  2. Ve a Polski > Importar / Exportar CSV
  3. Sube el archivo y haz clic en Importar
  4. El plugin actualizará los metadatos de los productos para todas las filas del archivo

La importación sobreescribe los valores existentes. Las celdas vacías en el CSV eliminan los datos guardados previamente para ese campo.


#Preguntas frecuentes

¿Debo completar los 8 campos?

No. La sección GPSR se muestra en la página del producto únicamente para los campos que tienen valor. Como mínimo debes proporcionar los datos exigidos por el reglamento GPSR para tu tipo de actividad - generalmente el fabricante o importador y la persona responsable. Consulta con un abogado o con el organismo de supervisión sobre los requisitos específicos.

La sección GPSR no aparece en la página del producto - ¿qué comprobar?

Primero asegúrate de que el módulo GPSR está activado en Polski > Módulos. Después abre el editor del producto y comprueba que al menos un campo GPSR tiene valor - una sección vacía nunca se muestra. Si el tema sobreescribe la plantilla del producto y elimina el hook woocommerce_product_meta_end, la sección GPSR no se inyectará.

¿Cómo identificar rápidamente qué productos no tienen datos GPSR?

En la lista de productos (Productos > Todos los productos) la columna GPSR muestra un guion gris para los productos sin ningún dato. Puedes ordenar la lista o usar los filtros de WooCommerce para identificar los productos que hay que completar. Para un mayor número de productos, usa la exportación CSV, filtra las filas con columnas GPSR vacías e importa el archivo completado.

¿Los datos GPSR están disponibles en la WooCommerce Store API (bloques de Gutenberg)?

Sí. Los datos GPSR se registran mediante la extensión Store API del plugin (ProductDataExtension), por lo que están disponibles tanto en el tema clásico como en los bloques de WooCommerce.

¿Cómo personalizar la apariencia de la sección GPSR en la página del producto?

Copia el archivo wp-content/plugins/polski/templates/single-product/gpsr-info.php a wp-content/themes/tu-tema/polski/single-product/gpsr-info.php y edítalo libremente. También puedes añadir tus propios estilos CSS para las clases .polski-gpsr-info y .polski-gpsr-info__list.


#Páginas de documentación relacionadas

#Omnibus - precio más bajo de los últimos 30 días

El módulo Omnibus de Polski for WooCommerce realiza un seguimiento automático del historial de precios de los productos y muestra el precio más bajo de los últimos 30 días en los productos en promoción. Cumple con los requisitos de la Directiva Omnibus (UE 2019/2161), vigente en Polonia desde el 1 de enero de 2023.


#¿Qué es la Directiva Omnibus?

La Directiva Omnibus (UE 2019/2161) obliga a las tiendas online a informar a los clientes del precio más bajo del producto en los últimos 30 días cuando se presenta en promoción. Esto significa que junto al precio tachado (regular) y al precio promocional debe aparecer un mensaje del tipo: “Precio más bajo de los últimos 30 días: 89,00 EUR”.

El módulo registra el precio cada vez que se guarda el producto y mantiene el historial de forma automática. No requiere la introducción manual de datos.


#Activación del módulo

  1. Ve a Polski > Módulos
  2. Busca el módulo Precio más bajo (Omnibus) en el grupo “Precios y Omnibus”
  3. Activa el interruptor y haz clic en Guardar ajustes
  4. A partir de ese momento el plugin empieza a registrar los precios cada vez que se guarda un producto

#¿Cómo funciona el seguimiento de precios?

El precio se registra automáticamente en dos situaciones:

  • al guardar un producto simple (woocommerce_update_product, woocommerce_new_product)
  • al guardar una variante de producto variable (woocommerce_save_product_variation)

Cada día se guarda como máximo un registro por producto - los duplicados se omiten. El módulo realiza el seguimiento tanto del precio regular como del precio promocional. El precio efectivo más bajo del periodo de seguimiento se calcula automáticamente en el momento de la visualización.

Los registros antiguos se eliminan automáticamente mediante la tarea cron (polski_daily_maintenance) según el ajuste “Almacenar historial (días)”.


#Ajustes del módulo

#Seguimiento de precios

AjusteValor predeterminadoDescripción
Periodo de seguimiento (días)30Número de días considerados al calcular el precio más bajo. La directiva exige un mínimo de 30 días.
Almacenar historial (días)90Los registros más antiguos que este límite se eliminan automáticamente de la base de datos.
Precios con impuestoactivadoCuando está activo, realiza el seguimiento y muestra los precios brutos (con IVA).

#Visualización

AjusteValor predeterminadoDescripción
Solo productos en promociónactivadoLa información aparece únicamente cuando el producto tiene un precio promocional activo.
Página del productoactivadoMuestra el mensaje en la página del producto individual.
Lista de productos (tienda, categorías)desactivadoMuestra el mensaje en el bucle de productos.
Productos relacionados y destacadosdesactivadoMuestra el mensaje en las secciones “Productos similares” y “Destacados”.
CarritodesactivadoMuestra el mensaje junto al producto en el carrito.
Mostrar precio regular (antes de la promoción)desactivadoInformación adicional sobre el precio antes del inicio de la promoción.

#Plantilla del mensaje

AjusteValor predeterminadoDescripción
Contenido del mensajePrecio más bajo de los ultimos {days} días: {price}Texto que se muestra junto al producto. Admite las variables: {price}, {days}, {date}, {regular_price}.
Sin historial de preciosOcultar mensajeComportamiento cuando no hay datos históricos: ocultar / mostrar precio actual / texto personalizado.
Texto personalizado (sin historial)El precio no ha cambiado en el periodo de {days} díasTexto que se muestra cuando no hay historial y se selecciona la opción “texto personalizado”.
Calculado desdeEl día de inicio de la promociónPunto de referencia: el día de inicio de la promoción o el día de hoy.

#Productos con variantes

AjusteValor predeterminadoDescripción
Seguimiento de variantes por separadoactivadoCada variante del producto variable tiene su propio historial de precios independiente.

#Variables de plantilla

En el campo “Contenido del mensaje” puedes usar las siguientes variables:

  • {price} - precio efectivo más bajo del periodo de seguimiento (formateado, con moneda)
  • {days} - número de días del ajuste “Periodo de seguimiento”
  • {date} - fecha en que se registró el precio más bajo
  • {regular_price} - precio regular del producto antes de la promoción

Ejemplos de mensajes:

Precio más bajo de los ultimos {days} dias: {price}
Precio más bajo anterior: {price} (en los ultimos {days} dias)
Precio antes de la promocion: {regular_price} | Mas bajo en 30 dias: {price}

#Shortcode

El shortcode [polski_omnibus_price] permite mostrar la información del precio más bajo en cualquier lugar - en la descripción del producto, en la plantilla de la página o en un elemento del page builder.

Uso básico (muestra el precio del producto actual en el bucle de WooCommerce):

[polski_omnibus_price]

Con un producto específico (fuera del bucle de WooCommerce, por ejemplo en una página de texto):

[polski_omnibus_price product="123"]

Donde 123 es el ID del producto. El shortcode devuelve una cadena vacía cuando el producto no está en promoción (con el ajuste predeterminado “Solo productos en promoción”) o cuando no hay datos históricos.


#Compatibilidad con plugins Omnibus externos

El plugin Polski for WooCommerce detecta automáticamente las soluciones Omnibus externas más populares (p. ej. wc-price-history). Cuando dicho plugin está activo, el módulo le delega la obtención de datos en lugar de usar su propia base de historial de precios. El estado de la integración es visible en el panel del módulo.

Cuando no hay ningún plugin externo instalado, se usa el sistema de seguimiento integrado.


#Clases CSS y filtro HTML

El HTML generado tiene la siguiente estructura:

<div class="polski-omnibus-price">
  <span class="polski-omnibus-price__text">Precio más bajo de los ultimos 30 dias: 89,00 PLN</span>
</div>

Puedes modificar el aspecto mediante CSS en el tema o usar el filtro PHP:

add_filter('polski/price/omnibus_html', al (string $html, $lowest, $product): string {
    // $lowest es un objeto OmnibusPrice con el campo effectivePrice() y currency
    // $product es un objeto WC_Product
    return $html;
}, 10, 3);

#Preguntas frecuentes

¿El módulo funciona de forma retroactiva - tendrá datos desde el momento en que se active?

No. El seguimiento comienza desde el momento de la activación. Los primeros datos aparecerán la próxima vez que se guarde un producto (manualmente o mediante actualización masiva). Para tiendas con un gran número de productos se puede realizar una actualización masiva desde WooCommerce > Productos > Seleccionar todos > Editar.

El producto no muestra el mensaje Omnibus - ¿por qué?

Comprueba en orden: (1) si el módulo está activado en Polski > Módulos, (2) si el producto tiene un precio promocional activo - con los ajustes predeterminados el mensaje aparece únicamente para productos en promoción, (3) si el producto ya tiene datos históricos guardados - el plugin debe haber registrado al menos un registro primero.

¿El módulo funciona con productos variables?

Sí. Con la opción “Seguimiento de variantes por separado” activada, cada variante tiene su propio historial de precios. El shortcode y la visualización automática funcionan tanto para productos simples como para variantes.

¿Con qué rapidez se eliminan los datos antiguos?

La tarea cron polski_daily_maintenance se ejecuta una vez al día. Elimina los registros más antiguos que el valor del ajuste “Almacenar historial (días)” (90 días por defecto). Puedes cambiarlo en la configuración del módulo.

¿Se puede usar una plantilla de vista personalizada?

Sí. Copia el archivo de plantilla desde wp-content/plugins/polski/templates/ a wp-content/themes/your-theme/polski/ y edítalo. Como alternativa, usa el filtro polski/price/omnibus_html en PHP.


#Desistimiento del contrato - formulario de devoluciones

El módulo de devoluciones automatiza el derecho legal del consumidor a desistir de un contrato celebrado a distancia. El clientes presenta la solicitud directamente desde el panel “Mi cuenta”, la tienda recibe la notificación y todo el flujo queda registrado en el panel de administración.


#Directiva 2023/2673 - qué cambia y cuándo entra en vigor

La Directiva del Parlamento Europeo y del Consejo 2023/2673, de 22 de noviembre de 2023, modifica las normás de ejercicio del derecho de desistimiento para las tiendas online que operan en la UE. La implementación polaca entra en vigor el 19 de junio de 2026.

Los cambios más importantes:

  • El consumidor debe tener acceso a un formulario de desistimiento unificado en formato electrónico directamente en la página de la tienda
  • El vendedor está obligado a confirmar la recepción de la solicitud por vía electrónica sin demora injustificada
  • El plazo de 14 días se cuenta desde el día en que el consumidor obtuvo la posesión física del bien (no desde la fecha del pedido)

El módulo de devoluciones de Polski for WooCommerce cumple con estos requisitos desde el momento de su activación.


#Cómo funciona el proceso de devolución

#Lado del clientes

  1. El clientes inicia sesión en Mi cuenta > Pedidos
  2. En cada pedido que cumple los requisitos de devolución aparece el botón Desistir del contrato
  3. Tras hacer clic, el clientes ve un formulario con un campo opcional “Motivo del desistimiento”
  4. Tras enviar el formulario, el clientes recibe un mensaje de confirmación de recepción de la solicitud
  5. Se envía una confirmación al correo electrónico indicado - requerida por la directiva 2023/2673

#Lado del administrador

  1. En el panel de pedidos aparece una nota sobre la solicitud presentada
  2. La solicitud llega a la sección Polski > Devoluciónes con el estado “Presentada”
  3. El administrador revisa la solicitud y elige una acción: Confirmar o Rechazar
  4. Tras la confirmación, la tienda procesa el reembolso manualmente o a través de WooCommerce Refunds
  5. Al finalizar el proceso, el administrador cambia el estado a “Completada”

#Estados de la solicitud

EstadoDescripción
PresentadaEl clientes ha presentado la solicitud, a la espera de respuesta de la tienda
ConfirmadaEl administrador ha confirmado la recepción de la solicitud
CompletadaReembolso procesado
RechazadaSolicitud rechazada (p. ej. por haber superado el plazo)

#Shortcode [polski_withdrawal_form]

El shortcode permite colocar el formulario de desistimiento en cualquier página de WordPress - por ejemplo en una página dedicada “Devoluciónes y reclamaciones”.

[polski_withdrawal_form]

El formulario verifica automáticamente si el clientes está conectado y si el pedido es elegible. Si el clientes no ha iniciado sesión, muestra un enlace de acceso.


#Modo de un solo clic (one-click)

Cuando la opción Desistimiento en un clic está activada en los ajustes del módulo, junto al pedido aparece un segundo botón con un flujo simplificado:

  1. El clientes hace clic en el botón con un solo clic
  2. Se muestra una página de confirmación (sin formulario con campo de motivo)
  3. El clientes confirma haciendo clic en “Confirmar desistimiento”
  4. La solicitud llega al sistema de la misma forma que con el formulario estándar

Este modo minimiza el número de pasos y el abandono del proceso de devolución. Útil en tiendas con un gran volumen de devoluciones.


#Exclusiones por producto

Algunos productos están excluidos por ley del derecho de desistimiento - por ejemplo, artículos fabricados a medida, grabaciones de audio/vídeo después de ser desprecintadas, contenido digital entregado de forma inmediata.

Para excluir un producto específico:

  1. Ve al editor del producto en WooCommerce
  2. Abre la pestaña Datos del producto > Polski
  3. Marca la opción Excluir del derecho de desistimiento

Si todos los productos del pedido están excluidos, el botón de desistimiento no aparece en ese pedido. Si el pedido contiene una combinación de productos excluidos y normales, el botón está disponible.


#Configuración del módulo

Ajustes del módulo disponibles en Polski > Ajustes > Devoluciónes:

AjusteDescripción
Texto del botónEtiqueta del botón junto al pedido (por defecto: “Desistir del contrato”)
Desistimiento en un clicActiva el flujo simplificado de un solo clic
Texto del botón one-clickEtiqueta separada para el botón one-click
Nota al pedido (presentación)Contenido de la nota automática al presentar la solicitud
Nota al pedido (confirmación)Contenido de la nota automática al confirmar por el administrador
Texto de éxitoMensaje que se muestra al clientes tras presentar la solicitud
Etiqueta del motivoContenido de la etiqueta del campo “Motivo del desistimiento” en el formulario
Formato de fecha del estadoFormato de la fecha que se muestra en los detalles del pedido del clientes

#Notificaciones por correo electrónico

El módulo envía correos electrónicos a través del sistema estándar de WooCommerce:

  • Al clientes - confirmación de recepción de la solicitud, enviada automáticamente tras presentar el formulario
  • Al administrador - notificación de nueva solicitud
  • Al clientes - notificación de confirmación por parte de la tienda (tras la acción del administrador)

El contenido de los correos puede editarse en WooCommerce > Ajustes > Correos electrónicos. Las plantillas están disponibles para sobreescribir en el tema en el directorio yourtheme/polski/emails/.


#Filtros para desarrolladores

El módulo proporciona filtros PHP para personalizar el comportamiento:

// Cambiar el número de dias para el desistimiento (por defecto 14)
add_filter('polski/withdrawal/period_days', al(int $days): int {
    return 30; // p. ej. ampliar a 30 dias como USP de la tienda
});

// Cambiar la elegibilidad del pedido
add_filter('polski/withdrawal/eligible', al(bool $eligible, \WC_Order $order): bool {
    // lógica personalizada
    return $eligible;
}, 10, 2);

// Anadir campos personalizados al formulario
add_filter('polski/withdrawal/form_fields', al(array $fields): array {
    $fields['contact_preference'] = [
        'type'     => 'select',
        'label'    => 'Metodo de contacto preferido',
        'options'  => ['email' => 'Correo', 'phone' => 'Telefono'],
        'required' => false,
    ];
    return $fields;
});

Acciones disponibles para hookear:

add_action('polski/withdrawal/requested',  al(\Polski\Model\WithdrawalRequest $req): void { /* ... */ });
add_action('polski/withdrawal/confirmed',  al(\Polski\Model\WithdrawalRequest $req): void { /* ... */ });
add_action('polski/withdrawal/completed',  al(\Polski\Model\WithdrawalRequest $req): void { /* ... */ });

#Condiciones de elegibilidad del pedido

Un pedido es elegible para devolución cuando se cumplen todas las condiciones siguientes:

  1. Han transcurrido menos de 14 días desde la fecha de finalización del pedido (o la fecha de creación, si el pedido no tiene el estado “completado”)
  2. No existe una solicitud de devolución activa para ese pedido (con un estado distinto de “Rechazada”)
  3. Al menos un producto del pedido no está excluido del derecho de desistimiento
  4. El filtro polski/withdrawal/eligible no devuelve false

#Preguntas frecuentes

¿Puede el clientes presentar varias solicitudes para el mismo pedido?

No. El sistema bloquea una segunda solicitud si existe una solicitud activa para ese pedido (con estado Presentada, Confirmada o Completada). Solo es posible presentar una nueva solicitud cuando la anterior haya sido rechazada.

¿Qué ocurre cuando todos los productos del pedido están excluidos de la devolución?

El botón de desistimiento no aparece en ese pedido. El clientes no puede presentar la solicitud ni a través de “Mi cuenta” ni a través del shortcode.

¿El módulo emite automáticamente el reembolso en WooCommerce?

No. El módulo gestiona las solicitudes y la comunicación - el propio reembolso requiere la acción manual del administrador en el panel del pedido o la integración con un sistema externo a través de la acción polski/withdrawal/confirmed.

¿Puedo ampliar el periodo de 14 días?

Sí, mediante el filtro polski/withdrawal/period_days. Ten en cuenta que reducirlo por debajo de 14 días es contrario a la legislación de consumidores de la UE.

¿Cómo personalizar la apariencia del formulario en la página?

Copia la plantilla desde wp-content/plugins/polski/templates/account/withdrawal-confirm.php a wp-content/themes/yourtheme/polski/account/withdrawal-confirm.php y edítala según tus necesidades.


#Otras páginas de documentación

#Módulos de tienda

Polski for WooCommerce incluye 13 módulos de tienda que amplían la interfaz de WooCommerce con las funciones que esperan los clientes de las tiendas modernas. Cada módulo se activa por separado en Polski > Módulos y se configura de forma independiente.


#1. Wishlist (lista de deseos)

Permite a los clientes guardar productos en una lista de deseos sin necesidad de comprarlos. Funciona tanto para visitantes (cookie) como para usuarios registrados (base de datos). Al iniciar sesión, la lista de la sesión de invitado se fusiona automáticamente con la cuenta.

Dónde aparece el botón:

  • Página del producto (hook woocommerce_single_product_summary, prioridad 33)
  • Fichas de productos en el archivo (hook woocommerce_after_shop_loop_item, prioridad 19)

Pestaña en la cuenta del clientes: el enlace “Favoritos” se añade automáticamente al menú Mi cuenta.

Shortcode: no hay shortcode dedicado - la lista se renderiza a través del endpoint de cuenta /polska-wishlist/.

Ajustes principales:

AjusteValor predeterminadoDescripción
allow_gueststruePermitir a visitantes sin registro
show_on_singletrueBotón en la página del producto
show_on_looptrueBotón en el listado
show_in_accounttruePestaña en Mi cuenta
grid_columns4Número de columnas de cuadrícula (2-6)
show_pricetruePrecio en la lista de deseos
show_add_to_carttrueBotón de añadir al carrito

Bloque de Gutenberg y widget de Elementor disponibles para incrustar la lista de deseos en cualquier lugar.


#2. Comparador de productos

Permite comparar hasta 4 productos (por defecto) en una tabla comparativa. Compatible con visitantes y usuarios registrados. Cuando la lista está llena, el producto más antiguo se reemplaza automáticamente.

Dónde aparece el botón:

  • Página del producto (prioridad 34, justo después del wishlist)
  • Fichas en el listado (prioridad 20)

La tabla comparativa muestra: precio, precio por unidad, SKU, disponibilidad, tiempo de entrega, marca, fabricante, GTIN/EAN, descripción corta y atributos del producto.

Pestaña en la cuenta del clientes: enlace “Comparar” en Mi cuenta. Para visitantes, la tabla se muestra en la página de la tienda añadiendo el parámetro ?polski_compare=1 a la URL.

Ajustes principales:

AjusteValor predeterminadoDescripción
max_items4Número máximo de productos (2-6)
allow_gueststrueAcceso sin registro
show_only_differencesfalseMostrar solo diferencias por defecto
highlight_differencestrueResaltar celdas con diferencias
show_attributestrueAtributos en la tabla
show_descriptiontrueDescripción corta en la tabla
show_add_to_carttrueBotón de compra en la tabla

Bloque de Gutenberg y widget de Elementor disponibles.


#3. Quick view (vista rápida)

Abre un modal AJAX ligero con una vista previa del producto directamente desde el listado, sin abandonar la página. El modal admite variantes de productos.

El botón aparece en las fichas del listado (hook woocommerce_after_shop_loop_item, prioridad 21). Se activa únicamente en páginas de archivo (tienda, categoría, etiqueta, taxonomías de productos).

El modal incluye: imagen y galería (hasta 4 imágenes), título, precio, precio por unidad, SKU, marca, fabricante, tiempo de entrega, formulario de añadir al carrito.

Ajustes principales:

AjusteValor predeterminadoDescripción
show_on_looptrueBotón en el listado
show_imagetrueImagen principal en el modal
show_gallerytrueGalería (hasta 4 imágenes)
show_pricetruePrecio
show_unit_pricetruePrecio por unidad
show_skutrueSKU
show_brandtrueMarca
show_delivery_timetrueTiempo de entrega
show_add_to_carttrueFormulario de compra
show_backdrop_closetrueCerrar haciendo clic en el fondo

#4. AJAX search (buscador en tiempo real)

Amplía el buscador estándar de WooCommerce con sugerencias en tiempo real. Los resultados aparecen tras escribir un número mínimo de caracteres (2 por defecto), con debouncing opcional.

El motor de búsqueda también busca en los campos: fabricante (taxonomía polski_manufacturer), GTIN/EAN, ingredientes y datos GPSR - campos no disponibles en el buscador estándar de WooCommerce.

Shortcode:

[polski_ajax_search]

Bloque de Gutenberg y widget de Elementor disponibles para incrustar el buscador en el menú, la barra lateral o la cabecera.

Endpoint REST: GET /?rest_route=/polski/v1/search

Ajustes principales:

AjusteValor predeterminadoDescripción
min_chars2Número mínimo de caracteres
debounce_ms180Retardo de la consulta (ms)
limit6Número de resultados
show_imagetrueMiniatura del producto
show_pricetruePrecio en los resultados
show_skutrueSKU en los resultados
show_view_all_linktrueEnlace “Ver todos”
include_out_of_stockfalseIncluir productos sin stock

#5. AJAX filtros

Filtros progresivos para archivos de productos. El filtrado se realiza mediante parámetros GET (URL-friendly, favorables para el SEO y el historial del navegador).

Filtros disponibles automáticamente: categoría de producto, marca (polski_brand), rango de precio, estado de stock, productos en promoción, atributos de WooCommerce (hasta 4 taxonomías, configurables).

Dónde se renderiza el formulario: automáticamente antes del listado de productos (woocommerce_before_shop_loop, prioridad 9) en las páginas de tienda, categoría, etiqueta y taxonomía de productos.

Shortcode:

[polski_ajax_filters]

Bloque de Gutenberg y widget de Elementor disponibles para colocar los filtros en la barra lateral o encima del listado.

Ajustes principales:

AjusteValor predeterminadoDescripción
show_on_shoptrueRender automático en el archivo
show_attributestrueFiltros de atributos
max_attribute_taxonomies4Cuántos atributos mostrar

Parámetros URL de los filtros:

ParámetroDescripción
polski_filter_categorySlug de categoría
polski_filter_brandSlug de marca
polski_filter_min_pricePrecio mínimo
polski_filter_max_pricePrecio máximo
polski_filter_stockinstock - solo disponibles
polski_filter_sale1 - solo promociones
polski_filter_{taxonomy}Slug de término para atributos

#6. Slider de productos

Carrusel de productos para presentar grupos seleccionados del catálogo: novedades, bestsellers, productos relacionados o indicados manualmente. Compatible con arrastre (touch/mouse drag) y autoplay.

Shortcode:

[polski_product_slider category="obuwie" limit="8" autoplay="1"]

Bloque de Gutenberg con selección visual de categoría y widget de Elementor con control total del aspecto disponibles.


#7. Gestión de etiquetas (Badge management)

Etiquetas automáticas y manuales que se muestran sobre la imagen del producto en el listado y en la página del producto. Cada etiqueta tiene un estilo (color) y opcionalmente una forma.

Tipos de etiquetas generadas automáticamente:

EtiquetaCondiciónEstilo predeterminado
PromociónProducto con descuento (is_on_sale)warning
NovedadProducto añadido en los últimos X díassuccess
Últimás unidadesStock <= umbralwarning
BestsellerVentas totales >= umbralaccent

Etiquetas manuales: se configuran por producto en la pestaña Polski del editor. Campos: texto principal (_polski_badge_text), estilo (_polski_badge_style), texto secundario (_polski_badge_secondary_text).

Dónde se muestran las etiquetas:

  • Página del producto: hook woocommerce_before_single_product_summary, prioridad 6
  • Listado: hook woocommerce_before_shop_loop_item_title, prioridad 9

Ajustes principales:

AjusteValor predeterminadoDescripción
show_on_singletruePágina del producto
show_on_looptrueListado de productos
shapepillForma (pill o square)
uppercasefalseMayúsculas
max_badges_single4Máx. de etiquetas en la página del producto
max_badges_loop3Máx. de etiquetas en el listado
newness_days30Días para la etiqueta “Novedad”
low_stock_threshold3Umbral “Últimás unidades”
bestseller_threshold25Umbral “Bestseller”
show_sale_badgetrueEtiqueta de promoción
show_new_badgetrueEtiqueta de novedad
show_low_stock_badgetrueEtiqueta de stock bajo
show_bestseller_badgetrueEtiqueta de bestseller

#8. Gestor de pestañas (Tab manager)

Permite gestionar las pestañas de la página del producto: cambiar el orden, ocultar las pestañas predeterminadas de WooCommerce (Descripción, Información adicional, Valoraciones) y añadir pestañas personalizadas con contenido HTML o shortcodes.

Configuración disponible en Polski > Módulos > Tab manager con vista previa del diseño de pestañas.


Permite incrustar un vídeo (YouTube, Vimeo o archivo propio) como primer slide de la galería del producto. El vídeo reemplaza o complementa las imágenes del producto.

El campo de vídeo se configura en la pestaña Polski del editor de producto. Admite URL de YouTube/Vimeo y URL directa de archivo mp4.


Añade zoom a la imagen del producto al pasar el cursor o hacer clic - tanto en forma de lightbox como de efecto zoom inline. Solo requiere activar el módulo, sin necesidad de configuración de código.


#11. Lista de espera (Waitlist)

Cuando un producto está agotado, muestra un formulario de inscripción en la lista de espera. El clientes introduce su dirección de correo electrónico y recibe automáticamente una notificación cuando el producto vuelva al stock.

Las notificaciones se envían a través de los correos electrónicos transacciónales de WooCommerce. La lista de espera es visible en la pestaña del producto en el panel de administración.


#12. Scroll infinito (Infinite scroll)

Sustituye la páginación estándar de WooCommerce por la carga automática de más productos al hacer scroll (o mediante el botón “Cargar más”). Funciona con los filtros AJAX.

Opciones de modo:

  • scroll - carga al llegar al final del listado
  • button - botón “Mostrar más productos”

#13. Popup

Módulo de ventanas emergentes para crear una lista de correo, presentar promociones o descuentos de bienvenida. Disparadores: tiempo en la página, intención de salida (exit intent), porcentaje de scroll.

Shortcode para incrustar el popup en el contenido de la página:

[polski_popup id="123"]

Editor visual de popups disponible en Polski > Popup.


#14. Trust Badges (sellos de confianza)

Muestra señales de confianza configurables en páginas de producto, carrito y checkout: pago seguro, entrega rápida, garantía de devolución, garantía de calidad. CSS puro + iconos SVG en línea para un impacto cero en el rendimiento (sin solicitudes HTTP adicionales).

Iconos disponibles: lock, truck, refresh, shield, star, check, heart


#15. Live Cart Sidebar (barra lateral del carrito)

Panel deslizante que muestra el contenido del carrito cuando se añade un producto. Muestra lista de productos, subtotal, barra de progreso de envío gratuito y enlace rápido al checkout. Sin recarga de la página - se actualiza mediante fragmentos del carrito de WooCommerce.

AjustePredeterminadoDescripción
auto_opentrueAbrir automáticamente al añadir al carrito
show_subtotaltrueMostrar subtotal
free_shipping_threshold0Umbral de envío gratuito (0 = desactivado)
positionrightLado del panel (right/left)

#16. Social Proof (notificaciones de compras)

Notificaciones toast flotantes que muestran compras recientes (“Jan de Varsovía acaba de comprar…”). Carga AJAX, caché de 5 minutos, posición y tiempo configurables. Opción de anonimización de nombres para cumplimiento con el RGPD.

AjustePredeterminadoDescripción
display_interval8Intervalo entre notificaciones (segundos)
display_duration5Duración de la visualización (segundos)
positionbottom-leftPosición (bottom-left, bottom-right, top-left, top-right)
anonymize_namefalseAnonimizar nombres de clientes
hide_on_mobilefalseOcultar en dispositivos móviles

#17. Product Q&A (preguntas y respuestas)

Preguntas y respuestas al estilo Amazon en las páginas de producto. Los clientes hacen preguntas, cualquiera puede responder. Notificaciones por correo al administrador, votación de respuestas, marcado Schema.org QAPage para rich snippets de SEO.


#18. Price History Chart (gráfico de historial de precios)

Sparkline SVG visual que muestra tendencias de precios en las páginas de producto. Utiliza los datos de precios del módulo Omnibus. Período configurable (30/90/180 días), muestra precios mínimos y máximos. Aumenta la transparencia de precios y la confianza del cliente.

AjustePredeterminadoDescripción
days30Período del historial (días)
show_min_maxtrueMostrar precios mín./máx.
color#0369a1Color de la línea del gráfico

#19. Social Login (inicio de sesión social)

Inicio de sesión y registro mediante Google y Facebook. Botones con branding en Mi cuenta, checkout y formularios de inicio de sesión de WordPress. Crea automáticamente cuentas de cliente de WooCommerce. Enlaza cuentas por dirección de correo.


#20. Expert Reviews (reseñas de expertos)

Tipo de contenido personalizado expert_review para reseñas editoriales de productos. Enlaza reseñas con productos, asigna puntuaciones (1-10) y veredictos. Insignias de puntuación con código de colores y marcado Schema.org Review + Rating para SEO.


#21. Product Authors (autores de productos)

Taxonomía personalizada product_author para autores/creadores de productos. Se muestra en las páginas de producto y archivos. Marcado Schema.org Person. Ideal para librerías y editoriales.


#22. FAQ (preguntas frecuentes)

Tipo de contenido personalizado polski_faq con taxonomía de categoría. Shortcode [polski_faq] con filtro de categoría. Acordeón CSS sin JavaScript. Marcado Schema.org FAQPage para rich snippets de Google.

Shortcode:

[polski_faq category="shipping" limit="10"]

#23. Custom Checkout Fields (campos de checkout personalizados)

Añade, modifica y reordena los campos del formulario de checkout. 9 tipos de campos: text, textarea, select, checkbox, radio, number, email, date, tel. Los campos se muestran en la administración, en los correos y en Mi cuenta.

Lógica condicional: mostrar/ocultar campos según el método de envío, método de pago, valor del campo, categoría de producto o mínimo del carrito.

Gestiona en WooCommerce > Checkout Fields.


#24. GA4 DataLayer / GTM

Seguimiento de comercio electrónico de Google Analytics 4 mediante dataLayer. Admite eventos: view_item_list, view_item, add_to_cart, begin_checkout, purchase, remove_from_cart. Soporte de contenedor GTM y gtag.js. Scripts diferidos para Web Vitals.

AjustePredeterminadoDescripción
gtm_container_idID del contenedor GTM (GTM-XXXXXXX)
ga4_measurement_idID de medición GA4 (G-XXXXXXXXXX)
use_sku_as_idfalseUsar SKU en lugar del ID del producto

#25. Order Export (exportación de pedidos)

Exporta pedidos de WooCommerce a CSV con campos configurables, intervalos de fechas y filtros de estado. Más de 30 campos exportables, incluidos productos, datos de cliente y cupones.

Disponible en WooCommerce > Order Export.


#26. Stock Export (exportación de stock)

Exporta datos de stock de productos a CSV con 10 campos configurables. Filtro de umbral de stock (<=, >=, =). Compatibilidad con variaciones. Modo de vista previa (tabla HTML). Separador por punto y coma + BOM para Excel.

Disponible en Products > Stock Export.


#27. Auto Restore Stock (restauración automática de stock)

Restaura automáticamente el stock de productos cuando los pedidos se cancelan, reembolsan o fallan. Evita la restauración duplicada mediante el meta _polski_stock_restored.


#28. AJAX Add to Cart (añadir al carrito por AJAX)

Añade productos al carrito sin recargar la página, incluidos productos variables en páginas de producto individuales. Notificación toast con animación deslizante al completarse con éxito.


#29. Minimum Order (pedido mínimo)

Bloquea el checkout cuando el carrito no cumple el valor mínimo o el número mínimo de productos. Avisos en las páginas de carrito y checkout. Sobrescrituras por rol de usuario.


#30. Review Requests (solicitudes de reseña)

Envía automáticamente correos de solicitud de reseña tras completar el pedido. Secuencia de 2 correos (inicial + recordatorio). Incluye imágenes de producto y enlaces de reseña.


#Integración con Gutenberg y Elementor

Todos los módulos con shortcodes tienen bloques de Gutenberg y widgets de Elementor equivalentes. Los bloques de Gutenberg están disponibles en la categoría Polski del insertor de bloques. Los widgets de Elementor en la sección Polski del panel de widgets.


#Sobreescritura de plantillas

Todas las plantillas de los módulos de tienda pueden sobreescribirse desde el tema activo. Copia el archivo desde:

wp-content/plugins/polski/templates/

al directorio del tema:

wp-content/themes/tu-tema/polski/

Conserva la estructura de directorios original. Ejemplos de rutas:

  • polski/loop/wishlist-button.php - botón de wishlist en el listado
  • polski/single-product/compare-button.php - botón del comparador en la página del producto
  • polski/account/wishlist.php - página de lista de deseos en Mi cuenta
  • polski/account/compare.php - página del comparador en Mi cuenta
  • polski/shared/badges.php - plantilla de etiquetas
  • polski/quick-view/content.php - contenido del modal de quick view
  • polski/forms/ajax-search.php - formulario del buscador AJAX
  • polski/forms/ajax-filters.php - formulario de filtros AJAX

#Pasos siguientes

#Módulo de productos alimentarios

El módulo alimentario de Polski for WooCommerce permite mostrar en la página del producto toda la información requerida para los artículos alimentarios que se venden en Polonia y la UE: valores nutricionales, alérgenos, composición, Nutri-Score, contenido de alcohol, país de origen y datos del distribuidor.


#Activación del módulo

El módulo se gestiona mediante la opción polski_food en la base de datos. Para activarlo, ve al panel del plugin y pon el interruptor Productos alimentarios en activo. Al desactivar el módulo, ningún elemento se renderiza en la página del producto - los metadatos del producto permanecen intactos.


#Campos del producto

Cada campo se guarda como metadato del producto de WooCommerce. La siguiente tabla describe los campos disponibles y sus correspondientes claves meta.

CampoClave metaDescripción
Composición_polski_ingredientsLista completa de ingredientes como texto continuo
Alérgenostaxonomía polski_allergenTérminos de taxonomía asignados al producto
Valores nutricionales_polski_nutrientsObjeto JSON: nombre del nutriente, valor, unidad
Unidad de referencia_polski_nutrient_reference_unitPor ejemplo “100 g” o “100 ml”; el valor predeterminado se configura globalmente
Nutri-Score_polski_nutri_scoreUna letra: A, B, C, D o E
Cantidad neta_polski_net_filling_quantityPor ejemplo “250 g”
Contenido de alcohol_polski_alcohol_contentValor numérico; el sufijo ”% vol.” se añade automáticamente
País de origen_polski_place_of_originPaís o región de producción
Distribuidor_polski_food_distributorDatos del distribuidor o importador

#Tabla de valores nutricionales

Los valores nutricionales se almacenan como JSON en el meta _polski_nutrients. Cada fila de la tabla es un par clave-valor, donde la clave es el nombre del nutriente y el valor es un objeto con los campos value (valor) y unit (unidad).

Ejemplo de estructura JSON:

{
  "Wartość energetyczna": { "value": 350, "unit": "kcal" },
  "Tłuszcz": { "value": 12, "unit": "g" },
  "w tym kwasy nasycone": { "value": 4.2, "unit": "g" },
  "Węglowodany": { "value": 48, "unit": "g" },
  "w tym cukry": { "value": 6, "unit": "g" },
  "Białko": { "value": 8, "unit": "g" },
  "Sól": { "value": 0.5, "unit": "g" }
}

La tabla se renderiza con un encabezado que indica la unidad de referencia, por ejemplo “Valores nutricionales por 100 g”. La unidad de referencia puede configurarse globalmente en los ajustes del módulo o sobreescribirse individualmente por producto usando el meta _polski_nutrient_reference_unit.

La tabla no se muestra cuando el meta _polski_nutrients está vacío o cuando la opción show_nutrients está desactivada en los ajustes.


#Declaración de alérgenos

Los alérgenos se gestionan a través de la taxonomía polski_allergen. En lugar de introducirlos manualmente, se asignan al producto los términos de esa taxonomía - igual que las categorías o las etiquetas. Esto permite filtrar productos por alérgenos y gestionar la lista de forma global.

En la página del producto, los alérgenos se muestran en negrita, separados por comas, precedidos de la etiqueta “Alérgenos”. La etiqueta es configurable en los ajustes del módulo (allergens_label).

La sección no se muestra cuando el producto no tiene términos de taxonomía asignados o cuando la opción show_allergens está desactivada.


#Composición del producto

El campo de composición (_polski_ingredients) es un campo de texto - se introduce la composición completa tal como debe aparecer en la etiqueta del producto. El módulo la muestra precedida de la etiqueta “Ingredientes” (configurable como ingredients_label).

La sección no se muestra cuando el campo está vacío o cuando la opción show_ingredients está desactivada.


#Nutri-Score

Nutri-Score es el sistema europeo de evaluación nutricional de productos alimentarios en una escala de A (mejor) a E (peor). En el campo meta _polski_nutri_score se introduce una sola letra: A, B, C, D o E.

El módulo valida el valor - solo se aceptan estas cinco letras. Si el campo contiene otro valor o está vacío, la insignia no se muestra.

En la página del producto, la insignia se renderiza como un elemento HTML con la clase CSS polski-nutri-score--a (o b, c, d, e), lo que permite aplicar un color diferente a cada nivel sin configuración adicional.

La visualización de la insignia se controla con la opción show_nutri_score en los ajustes del módulo.


#Contenido de alcohol

Para los productos alcohólicos, el campo _polski_alcohol_content acepta el valor numérico del contenido de alcohol. El sufijo ”% vol.” se añade automáticamente y puede modificarse mediante la opción alcohol_suffix en los ajustes. La etiqueta “Contenido de alcohol” es configurable como alcohol_label.

La sección no se muestra para productos que tienen este campo vacío o cuando la opción show_alcohol está desactivada.


#País de origen y distribuidor

País de origen (_polski_place_of_origin) y datos del distribuidor (_polski_food_distributor) son campos de texto. La visualización de cada uno se controla de forma independiente mediante las opciones show_origin y show_distributor.

Las etiquetas “País de origen” y “Distribuidor” son configurables mediante origin_label y distributor_label respectivamente.


#Cantidad neta

El campo _polski_net_filling_quantity almacena la cantidad neta del producto como texto, por ejemplo “250 g” o “0,5 l”. La visualización se controla con la opción show_net_filling, y la etiqueta “Cantidad neta” es configurable mediante net_filling_label.


#Shortcode [polski_nutrients]

El shortcode [polski_nutrients] permite incrustar la tabla de valores nutricionales en cualquier lugar de la descripción del producto o de la página.

[polski_nutrients]

El shortcode renderiza el mismo HTML que la visualización automática de la tabla en la página del producto. Es útil cuando se quiere colocar la tabla en un lugar específico de la descripción en lugar de en la posición predeterminada debajo de la descripción.


#Bloque completo de información alimentaria

El método getFoodInfoHtml() renderiza todas las secciones en un único bloque <div class="polski-food-info">. El orden de los elementos es fijo:

  1. Composición
  2. Alérgenos
  3. Tabla de valores nutricionales
  4. Nutri-Score
  5. Contenido de alcohol
  6. País de origen
  7. Distribuidor
  8. Cantidad neta

Cada sección se renderiza únicamente cuando la opción correspondiente está activada y el campo del producto contiene datos.


#Preguntas frecuentes

¿Puedo usar el módulo alimentario para productos sin valores nutricionales?

Sí. Cada sección es independiente. Si solo completas el campo de composición y los alérgenos, únicamente se mostrarán estos. La tabla de valores nutricionales aparecerá solo cuando el meta _polski_nutrients contenga datos.

¿Dónde introduzco los valores nutricionales en el panel de WooCommerce?

Los datos del producto alimentario se introducen en la pestaña “Producto alimentario” del editor de producto de WooCommerce, que el módulo añade automáticamente tras su activación. Los valores nutricionales se introducen en una sección dedicada con campos para cada nutriente.

¿Cómo asignar alérgenos a un producto?

En el editor de producto, busca la sección “Alérgenos” (funciona de forma similar a las etiquetas de WooCommerce). Escribe o selecciona de la lista los alérgenos - por ejemplo “Gluten”, “Lactosa”, “Frutos secos”. Los términos se gestionan globalmente en Productos > Alérgenos.

¿Se calcula el Nutri-Score automáticamente?

No. La puntuación Nutri-Score se introduce manualmente (A, B, C, D o E). El cálculo de la puntuación requiere conocer la composición completa y las fórmulas específicas para cada categoría de producto - esto es responsabilidad del vendedor.

¿Puedo cambiar las etiquetas “Ingredientes”, “Alérgenos”, etc.?

Sí. Todas las etiquetas son configurables en los ajustes del módulo (polski_food). Los cambios se realizan en el panel del plugin y afectan a todos los productos a la vez.



#Otros módulos

#DSA Toolkit - ley de servicios digitales

Formulario de notificación de contenido ilegal mediante el shortcode [polski_dsa_report]. Panel de administración para gestionar notificaciones con seguimiento de estado. Notificaciones por correo electrónico sobre nuevas notificaciones.

#KSeF-ready - preparación para la factura electrónica

Detección automática de pedidos que requieren factura KSeF basada en el NIP. Hooks de acción: polski/ksef/invoice_ready, polski/ksef/is_required. Columna de estado KSeF en la lista de pedidos. Integración con plugins de facturación.

#Anti-greenwashing

Campos a nivel de producto: base de la alegación ecológica, enlace al certificado, fecha de vencimiento. Cumplimiento con la directiva de la UE sobre greenwashing (septiembre de 2026).

#Consentimientos GDPR y registro de auditoría

Casillas legales configurables en el checkout, registro y valoraciones. Registro de auditoría GDPR completo: IP, user agent, marcas de tiempo. 7 casillas integradas con etiquetas y mensajes editables.

#Precio por unidad

Visualización del precio por kg, litro, metro o cualquier unidad. Requerido por la legislación comercial polaca. Shortcode: [polski_unit_price].

#Visualización del IVA

Configuración bruto/neto con información sobre la tasa de IVA (“incluye 23 % IVA”). Gestión de la exención subjetiva (art. 113 párr. 1 de la ley del IVA). Shortcode: [polski_tax_notice].

#Tiempo de entrega

Tiempo de entrega estimado por producto, por variante, con fallback predeterminado. Shortcode: [polski_delivery_time].

#Páginas legales y correo electrónico

Generación automática de páginas: Términos y condiciones, Política de privacidad, Política de devoluciones, Reclamaciones. Adjuntos legales en los correos electrónicos de pedidos (texto o PDF). Información sobre la plataforma ODR.

#Double opt-in

Verificación de la dirección de correo electrónico en el registro de cuenta. Enlace de activación enviado por correo, bloqueo de acceso para cuentas no activadas.

#Valoraciones verificadas

Insignia de compra verificada en las valoraciones. Funciona para clientes registrados y compras de invitado identificadas por correo electrónico.

#NIP en el checkout

Campo NIP en la página de pago con validación de dígito de control. Obtención automática de datos de la empresa (nombre, dirección) de la base de datos GUS REGON al introducir el NIP. Configuración del entorno de la API (pruebas/producción).

#Marcas de productos

Taxonomía de marcas independiente de los datos del fabricante GPSR. Vista en la página del producto y en los listados, archivos de marcas con URLs propias. Etiqueta y separador configurables.

#Datos energéticos

Información sobre el consumo de energía para dispositivos eléctricos (etiquetas energéticas, clase energética). Se muestran en la página del producto en la sección de información.

#Schema.org

Generación automática de datos estructurados (Product, Offer, AggregateRating) en las páginas de producto. Compatible con Google Rich Results.

#CRA readiness - preparación para la Cyber Resilience Act

Preparación para los requisitos del CRA (EU Cyber Resilience Act). Monitorización de componentes de código abierto, notificación de vulnerabilidades de seguridad, integración con el registro de incidentes.

#DPA Tracker - registro de tratamiento de datos

Seguimiento de las operaciones de tratamiento de datos personales conforme al art. 30 del GDPR. Registro de contratos de encargado de tratamiento con subcontratistas y proveedores de servicios.

#Integración con Checkout toolkit

Capa de compatibilidad con los plugins más populares para campos de checkout, cookies y datos de productos. Detección e integración automáticas.

#Panel de cumplimiento y auditoría de tienda

Punto de control central: páginas legales, dark patterns, DPA, DSA, KSeF-ready, anti-greenwashing, seguridad. Estado verde/rojo con un solo clic.


#Idiomás compatibles

El plugin incluye traducciones integradas para el panel de administración y el frontend:

IdiomaCódigoEstado
Polacopl_PLTraducción completa (predeterminado)
Inglésen_USTraducción completa
Alemánde_DETraducción completa
Checocs_CZTraducción completa
Eslovacosk_SKTraducción completa
UcranianoukTraducción completa

Los archivos de traducción se encuentran en el directorio languages/. Se pueden sobrescribir desde wp-content/languages/plugins/.


#Requisitos técnicos

ParámetroRequisito
WordPress6.4+ (probado hasta 6.8)
WooCommerce8.0+ (probado hasta 9.6)
PHP8.1+
HPOSSí (Custom Order Tables)
WooCommerce BlocksSí (Store API)
Bloques de GutenbergSí (AJAX Search, Filters, Slider)
ElementorSí (widgets para search, filters, slider)
Plantillas del temaSí (sobreescritura desde yourtheme/polski/)
REST APInamespace polski/v1/
WP-CLIwp polski migrate, wp polski smoke-test
LicenciaGPLv2

#Shortcodes

ShortcodeDescripción
[polski_withdrawal_form]Formulario de desistimiento del contrato
[polski_ajax_search]Buscador AJAX
[polski_ajax_filters]Filtros AJAX
[polski_product_slider]Slider de productos
[polski_wishlist]Lista de deseos
[polski_compare]Comparador
[polski_dsa_report]Formulario DSA
[polski_unit_price]Precio por unidad
[polski_delivery_time]Tiempo de entrega
[polski_tax_notice]Aviso fiscal
[polski_shipping_notice]Aviso de envío
[polski_omnibus_price]Precio Omnibus
[polski_manufacturer]Datos del fabricante
[polski_safety_info]Información de seguridad
[polski_nutrients]Valores nutricionales
[polski_payment_methods]Métodos de pago
[polski_complaints]Formulario de reclamaciones

#Cómo instalar

El plugin está actualmente en proceso de revisión en WordPress.org. Una vez aprobado:

  1. Ve a Plugins > Añadir nuevo en el panel de WordPress
  2. Busca Polski for WooCommerce
  3. Haz clic en Instalar y Activar
  4. Ve al nuevo menú Polski en la barra lateral

Código fuente: github.com/wppoland/polski


#Notificación de errores y debates

El plugin es un proyecto de código abierto. Te animamos a participar activamente en su desarrollo:

Antes de notificar un error, comprueba si ya existe una notificación similar. Describe el problema con el mayor detalle posible: versión de WordPress, WooCommerce, PHP, plugins activos y pasos para reproducirlo.


#¿Necesitas ayuda con la configuración?

Si necesitas asistencia para configurar el plugin o adaptarlo a los requisitos específicos de tu tienda - contáctame.


Polski for WooCommerce - versión 1.3.0. Autor: wppoland.com. Licencia: GPLv2.

Recomendaciones de LinkedIn

Recomendaciones y opiniones sobre el trabajo con WPPoland

Recomendaciones seleccionadas de líderes de las comunidades WordPress, WordCamp y e-commerce - con énfasis en la entrega puntual, profundidad técnica y enfoque orientado al negocio en el desarrollo WordPress.

Karolina Czapla

Karolina Czapla

Estratega de Marketing – Performance & Digital Strategy

“Trabajar con Mariusz en el WordCamp me ha mostrado lo poco común que es combinar competencias técnicas profundas con un verdadero liderazgo. Planifica, coordina y entrega con precisión, a la vez que da al equipo espacio ...”

Co‑organizadora, WordCamp Gdynia 2024 y 2025

Argert Boja

Argert Boja

Senior Full‑Stack Developer

“Mariusz es el compañero de equipo que todos esperan tener: competencias técnicas profundas full‑stack en WordPress, explicaciones claras y una actitud positiva incluso bajo presión. Se mueve con soltura entre plugins per...”

Trabajamos juntos en proyectos WordPress

Daniel Blossfeld

Daniel Blossfeld

Consultor de Optimización de Procesos y Digitalización

“Tuve el placer de trabajar con Mariusz durante casi tres años. En ese tiempo, sus competencias técnicas profundas en desarrollo WordPress resultaron de un valor incalculable en una variedad de proyectos, desde la constru...”

Mariusz fue su cliente en proyectos WordPress

Jessica Di Pasquale

Jessica Di Pasquale

Liderando iniciativas de SEO con estrategias de crecimiento basadas en datos.

“Mariusz es una persona muy hábil, paciente y experta. Siempre dispuesto a ayudar y corregir errores, valoré mucho trabajar con él. ¡Es un compañero estupendo!”

Gestionó a Mariusz directamente

Belinda Koch

Belinda Koch

Analista de Web-Tracking en TUI

“Mariusz es una persona estupenda con quien trabajar. Está extremadamente motivado por aprender cosas nuevas y compartir su conocimiento, y domina una amplia gama de temas. Trabajamos juntos en analítica digital y trackin...”

Trabajó con Mariusz en temas de analítica digital y tracking

Paweł Lewczuk

Paweł Lewczuk

Desarrollador Front-end, Desarrollador WordPress

“Colaboré con Mariusz en varios proyectos y nuestra cooperación fue siempre ejemplar. Creo que aún tenemos por delante muchos proyectos conjuntos. ¡Muy recomendable!”

Mariusz fue cliente de Paweł

¿Qué es Polski for WooCommerce y para qué sirve? #
Polski for WooCommerce es un plugin gratuito de código abierto que adapta una tienda WooCommerce a las condiciones legales y comerciales polacas y a las directivas vigentes de la Unión Europea. Incluye más de 40 módulos que cubren GPSR, la directiva Omnibus, GDPR, DSA, KSeF-ready, formularios de desistimiento, precios por unidad, datos alimentarios y 13 herramientas de merchandising. En lugar de instalar una docena de plugins separados para cada requisito, tienes todo en un paquete con un único panel de administración. El plugin es compatible con WooCommerce Blocks, HPOS y PHP 8.1+, lo que lo hace listo para las versiones más recientes de WordPress y WooCommerce.
¿El plugin es gratuito y dónde puedo descargarlo? #
Sí, Polski for WooCommerce es completamente gratuito y se distribuye bajo la licencia GPLv2. El plugin está actualmente en revisión en WordPress.org - una vez aprobado estará disponible para descarga directamente desde el repositorio de plugins de WordPress (Plugins > Añadir nuevo > buscar 'Polski for WooCommerce'). El código fuente está disponible públicamente en GitHub en github.com/wppoland/polski. No hay tarifas ocultas, restricciones de funciones ni ventas forzadas - los 42 módulos están disponibles de forma gratuita.
¿Qué directivas y normativas de la UE admite el plugin? #
El plugin admite seis normativas clave: GPSR (seguridad general de productos - 8 campos con datos del fabricante y la persona responsable), la directiva Omnibus (seguimiento automático y presentación del precio más bajo en 30 días), GDPR (7 casillas de consentimiento configurables con historial de auditoría completo), DSA (formulario de notificación de contenido ilegal con panel de gestión), KSeF-ready (detección automática de pedidos que requieren factura electrónica según el NIP) y la directiva anti-greenwashing (campos de verificación de alegaciones ecológicas por producto). Cada normativa tiene un módulo dedicado con ajustes que se puede activar o desactivar de forma independiente.
¿Necesito conocimientos técnicos para configurar el plugin? #
No - el plugin está diseñado para que una persona no técnica pueda configurarlo en 10-15 minutos. El panel de administración creado en React ofrece controles de activación de módulos y páginas de ajustes dedicadas con descripciones en polaco. El panel de cumplimiento muestra el estado verde/rojo con un solo clic, indicando qué requiere atención. El asistente de configuración guía paso a paso por la introducción de datos de empresa, páginas legales y casillas de verificación en el checkout. Para usuarios avanzados hay disponibles REST API, hooks de PHP y comandos WP-CLI.
¿Qué es el GPSR y por qué lo necesita mi tienda? #
GPSR (General Product Safety Regulation) es un reglamento de la UE en vigor desde el 13 de diciembre de 2024 que exige que las páginas de producto de las tiendas online incluyan datos del fabricante, del importador, de la persona responsable de la conformidad en la UE, identificadores del producto, advertencias e instrucciones de seguridad. La falta de esta información puede acarrear sanciones económicas y la retirada de productos de los marketplaces. El plugin añade 8 campos GPSR al editor de cada producto WooCommerce, los muestra automáticamente en la página de producto, ofrece importación y exportación masiva por CSV y muestra una columna de estado de conformidad en la lista de productos del panel de administración.
¿Cómo funciona el formulario de desistimiento y qué cambia la Directiva 2023/2673? #
La Directiva UE 2023/2673, obligatoria a partir del 19 de junio de 2026, exige que las tiendas online permitan a los clientes presentar la declaración de desistimiento directamente desde la página de la tienda - mediante un botón, no solo un formulario PDF descargable. El plugin añade un botón 'Desistir del contrato' en la sección Mi cuenta junto a cada pedido que cumple los requisitos para devolución. El clientes hace clic en el botón, ve una página de confirmación y, tras confirmar, el sistema crea automáticamente una solicitud, envía una confirmación por correo electrónico y registra el historial de auditoría completo. El administrador gestiona las solicitudes desde un panel dedicado con los estados: Enviada, Confirmada, Completada, Rechazada.
¿El plugin admite productos alimentarios y el etiquetado de alimentos? #
Sí - el módulo de productos alimentarios es una solución completa de etiquetado de alimentos para WooCommerce. Incluye una tabla de valores nutricionales (por 100g o 100ml con etiquetas de columnas configurables), una declaración de alérgenos con taxonomía dedicada, una lista de ingredientes, un distintivo Nutri-Score (A-E con código de colores), contenido de alcohol, cantidad neta, lugar de origen y datos del distribuidor. Toda la información se muestra en una tabla organizada en la página de producto. El shortcode [polski_nutrients] permite insertar la tabla de valores nutricionales en cualquier lugar, y los datos se pueden importar de forma masiva mediante CSV.
¿Dónde puedo notificar un error o proponer una nueva función? #
Notifica errores y problemas técnicos en GitHub Issues en github.com/wppoland/polski/issues - describe el problema, indica las versiones de WordPress, WooCommerce y PHP, la lista de plugins activos y los pasos para reproducirlo. Plantea preguntas, ideas para nuevas funciones y debates en GitHub Discussions en github.com/wppoland/polski/discussions - ese es el lugar para conversaciones menos urgentes y el intercambio de experiencias con otros usuarios. Si no eres una persona técnica, también puedes enviar tu opinión directamente desde el panel del plugin - el formulario de comentarios está disponible en la barra lateral de cada página de ajustes de Polski.

¿Necesitas un FAQ adaptado a tu sector y mercado? Preparamos una versión alineada con tus objetivos de negocio.

Hablemos

Artículos Relacionados

Cómo combinar WooCommerce como backend de comercio con un front-end en Astro para Core Web Vitals, carrito, webhooks y SEO técnico. Arquitectura, límites PCI y checklist de despliegue sin cuentos de latencia cero.
wordpress

Headless WooCommerce con Astro: guía de rendimiento e-commerce 2026

Cómo combinar WooCommerce como backend de comercio con un front-end en Astro para Core Web Vitals, carrito, webhooks y SEO técnico. Arquitectura, límites PCI y checklist de despliegue sin cuentos de latencia cero.

Domina cada aspecto de la optimización de rendimiento WooCommerce - desde ajuste de base de datos y caché Redis hasta corrección de cart fragments y arquitectura headless. Pasos prácticos con resultados medibles.
wordpress

Optimizar WooCommerce: carrito, checkout, caché y Core Web Vitals

Domina cada aspecto de la optimización de rendimiento WooCommerce - desde ajuste de base de datos y caché Redis hasta corrección de cart fragments y arquitectura headless. Pasos prácticos con resultados medibles.

Como construir una tienda e-commerce ultra-rápida con WooCommerce Headless y Astro. Inmersion en la arquitectura, comparación de rendimiento y guía de implementación paso a paso.
wordpress

WooCommerce Headless con Astro: Guía de rendimiento e-commerce 2026

Como construir una tienda e-commerce ultra-rápida con WooCommerce Headless y Astro. Inmersion en la arquitectura, comparación de rendimiento y guía de implementación paso a paso.