Per-product settings (the Polski Pro tab)
Cinco módulos PRO se configuran por producto, no de forma global: tarjetas regalo, pedidos anticipados, suscripciones, paquetes de productos y “comprados juntos habitualmente”. Cada uno decide si actúa sobre un producto leyendo una clave meta de ese producto. Desde Polski PRO 1.26.0 existe una pantalla que escribe esas claves: una pestaña Polski Pro en la caja de datos del producto del editor de productos de WooCommerce.
Dónde está la pestaña y cuándo aparece
Sección titulada «Dónde está la pestaña y cuándo aparece»Abra cualquier producto y mire la caja Datos del producto. La pestaña Polski Pro va después de las pestañas estándar de WooCommerce y se muestra en productos simples, variables y externos.
La pestaña aparece solo si al menos uno de los cinco módulos está activo en Polski > Módulos. Con los cinco apagados no hay nada que configurar, así que la pestaña ni siquiera se añade. Dentro de la pestaña, solo un módulo activo recibe su grupo de campos: active dos y verá dos grupos, no cinco.
Esa condición es lo primero que conviene revisar si falta un campo que esperaba. El módulo es el interruptor de toda la tienda; esta pestaña es el interruptor de un producto.
Los campos
Sección titulada «Los campos»Cada grupo de abajo corresponde a un módulo. La clave meta es la misma que lee el servicio del módulo, así que la columna de claves responde también a qué hay que establecer desde WP-CLI o desde código propio.
Tarjeta regalo
Sección titulada «Tarjeta regalo»| Campo | Clave meta | Tipo | Notas |
|---|---|---|---|
| Sell as a gift card | _polski_gift_card_enabled |
yes / no |
La puerta. El módulo trata el producto como tarjeta regalo solo cuando vale yes. |
| Preset amounts | _polski_gift_card_amounts |
texto | Separado por comas, por ejemplo 50, 100, 200. Vacío recurre a los importes globales del módulo. |
| Allow a custom amount | _polski_gift_card_allow_custom_amount |
yes / no |
Permite al comprador escribir su propio importe. El módulo respeta además su ajuste global, así que un “permitir importe libre” de toda la tienda sigue vigente aunque esta casilla esté vacía. |
| Minimum custom amount | _polski_gift_card_min_amount |
número | Se lee como sustitución del mínimo global del módulo. |
| Maximum custom amount | _polski_gift_card_max_amount |
número | Se lee como sustitución del máximo global del módulo. |
Pedido anticipado
Sección titulada «Pedido anticipado»| Campo | Clave meta | Tipo | Notas |
|---|---|---|---|
| Sell as a pre-order | _polski_preorder_enabled |
yes / no |
La mitad de la puerta. |
| Release date | _polski_preorder_date |
fecha (Y-m-d) |
La otra mitad. Hacen falta las dos: con la casilla marcada y sin fecha el producto sigue siendo un producto corriente, porque el módulo exige la marca y una fecha legible antes de cambiar nada. |
| Button text | _polski_preorder_button_text |
texto | Sustituye para este producto el texto global del botón de pedido anticipado. |
Suscripción
Sección titulada «Suscripción»| Campo | Clave meta | Tipo | Notas |
|---|---|---|---|
| Sell as a subscription | _polski_subscription_enabled |
yes / no |
La puerta. |
| Bill every | _polski_subscription_interval |
entero | Número de periodos entre cobros. Se lee como 1 como mínimo. |
| Billing period | _polski_subscription_period |
day, week, month, year |
Sin valor se usa month. |
| Number of payments | _polski_subscription_length |
entero | 0 renueva hasta que el cliente cancele. |
| Sign-up fee | _polski_subscription_signup_fee |
número | Se cobra una vez, con el primer pago. |
| Trial days | _polski_subscription_trial_days |
entero | Días hasta el primer cobro. 0 para no tener prueba. |
Paquete de productos
Sección titulada «Paquete de productos»| Campo | Clave meta | Tipo | Notas |
|---|---|---|---|
| Bundled products | _polski_bundle_items |
área de texto | Un componente por línea, formato más abajo. |
| Section title | _polski_bundle_title |
texto | Sustituye para este producto el encabezado global de paquete del módulo. |
| Button text | _polski_bundle_button_text |
texto | Sustituye el texto global del botón de paquete. |
| Bundle discount | _polski_bundle_discount_type |
vacío, percent, fixed |
Vacío significa sin descuento. |
| Discount value | _polski_bundle_discount_value |
número | Se lee junto con el tipo de arriba. |
Bundled products admite un componente por línea, escrito como el identificador del producto, una barra vertical, la cantidad, otra barra vertical y si el componente es obligatorio:
42|2|yes57|1|no88La cantidad y la marca de obligatorio pueden omitirse, así que un 88 a secas es una unidad opcional del producto 88. Una marca cuenta como obligatoria cuando dice yes, 1, true o required. Una sola línea de identificadores separados por comas se acepta como abreviatura de una unidad de cada uno. Los identificadores que no correspondan a un producto existente se omiten.
No hay una casilla aparte de “activar paquete”: un producto es un paquete cuando Bundled products resuelve al menos un producto real.
Comprados juntos habitualmente
Sección titulada «Comprados juntos habitualmente»| Campo | Clave meta | Tipo | Notas |
|---|---|---|---|
| Suggested products | _polski_fbt_product_ids |
texto | Identificadores de producto separados por comas, espacios o puntos y coma. Se omite el identificador del propio producto, se descartan los duplicados y la lista se recorta al ajuste del módulo Maximum products taken from the product list (4 por omisión). |
| Section title | _polski_fbt_title |
texto | Sustituye para este producto el encabezado global del módulo. |
| Intro text | _polski_fbt_intro |
área de texto | Línea opcional bajo el encabezado. |
| Button text | _polski_fbt_button_text |
texto | Sustituye el texto global del botón de añadir todo. |
Igual que con los paquetes, no hay interruptor por producto: el bloque aparece en un producto en cuanto Suggested products contiene al menos un identificador utilizable.
Cómo funciona el guardado
Sección titulada «Cómo funciona el guardado»Cada campo se sanea al entrar: una casilla se guarda como yes o no, un campo entero como número entero de 0 como mínimo, un campo numérico como decimal de 0 como mínimo, las dos áreas de texto mediante sanitize_textarea_field y todo lo demás mediante sanitize_text_field. Un campo numérico dejado en blanco se guarda en blanco y no se convierte en 0, porque un campo vacío significa “sin valor para este producto” y un cero escrito significa cero. WooCommerce ya ha comprobado el nonce y la capacidad antes de que esto se ejecute.
El guardado omite todo grupo cuyo módulo esté apagado. Esto pesa más de lo que parece: una casilla sin marcar no envía nada, y el bucle lee un valor ausente como “vaciado”. Eso es correcto para una casilla que el comerciante acaba de desmarcar y equivocado para un campo que nunca estuvo en la página, así que apagar un módulo no borra en silencio los ajustes por producto que ya había introducido. Vuelva a encender el módulo y el producto queda configurado como estaba.
Revelado progresivo
Sección titulada «Revelado progresivo»Los subcampos de tarjeta regalo, pedido anticipado y suscripción están cada uno en un bloque que permanece plegado mientras su casilla principal esté vacía, de modo que un producto que no es una tarjeta regalo no muestra cinco campos de tarjeta regalo.
Esto es solo presentación. El marcado se sirve abierto, así que con JavaScript bloqueado todos los campos son visibles, editables y se guardan exactamente igual; nada queda condicionado al script. Un bloque plegado además queda fuera del orden de tabulación, así que un campo oculto no puede rellenarse con el teclado y guardarse sin que nadie lo vea.
Si un módulo sigue sin hacer nada
Sección titulada «Si un módulo sigue sin hacer nada»- ¿Está el módulo activo en Polski > Módulos? Los cinco se entregan apagados, porque cada uno cambia lo que ve un comprador.
- ¿Está puesta la puerta del producto? Tarjetas regalo, pedidos anticipados y suscripciones necesitan cada uno su casilla marcada en el producto; un pedido anticipado necesita además una fecha de lanzamiento.
- En paquetes y “comprados juntos habitualmente”, ¿las listas resuelven a productos reales y existentes?
- ¿El ajuste propio del módulo Show on the product page, en la pantalla de módulos, sigue permitiéndolo?