Entender la carga universal de precios

Los precios por zona de país usan una única página pública neutral para cada país. La página contiene marcadores de carga accesibles en lugar de importes específicos del cliente y, después de que la página cargue, solicita a la tienda los precios resueltos del visitante actual.

Esta guía está dirigida a propietarios de tiendas, gestores de producto y equipos de soporte que necesitan comprender qué deberían ver los clientes y cuándo es segura una caché de página compartida.

Qué ven los clientes

  1. Un catálogo público o una página de producto muestra inicialmente un marcador de precio neutral.
  2. La tienda resuelve en el servidor el país de WooCommerce del cliente y la zona habilitada.
  3. Los precios, las insignias de oferta, las acciones de la tarjeta de producto y los estados del producto variable se actualizan a la vez.
  4. Un fallo de red se reintenta una vez. Si la resolución sigue fallando, la página muestra Price unavailable sin revelar un importe almacenado en caché.

Los productos insertados posteriormente por un feed de producto, filtro, carrusel, scroll infinito, vista rápida o bloque compatible de WooCommerce siguen el mismo proceso. Las tarjetas clonadas reutilizan una respuesta de producto ya resuelta en lugar de solicitar repetidamente los mismos datos.

Una página de producto puede realizar una petición compacta para su formulario de producto completo y otra para las tarjetas de producto relacionadas. Esto es lo esperado: los productos se agrupan por las superficies de datos exactas que necesitan, de modo que los productos de solo tarjeta no incurren en trabajo de renderizado de formulario variable.

La hoja de estilos de precio por país y el resolvedor no se solicitan en una página que no contiene ningún marcador de precio. Se añaden automáticamente en el pie de página después de que se emita el primer marcador, o cuando un archivo de producto compatible declara que puede insertar productos regionales más tarde mediante AJAX. Esto sigue siendo carga diferida automática: los visitantes nunca necesitan hacer clic en un precio antes de que comience la resolución.

Los productos variables hidratan solo las opciones que WooCommerce puso a disposición en el formulario original. La fijación de precios por país puede deshabilitar una opción existente para la zona resuelta, pero no reintroduce variaciones privadas, ocultas, agotadas o excluidas de otro modo.

El formulario de compra hidratado usa el mismo ancho disponible que el formulario renderizado directamente por el servidor. Cambiar entre una página compartida anónima y una página autenticada, por tanto, no modifica la geometría del control de añadir al carrito.

Con POM Theme, las etiquetas de feed personalizado price, de botón de producto, de texto de oferta y de importe de oferta participan en este estado de tarjeta neutral. POM Faceted Search obtiene los rangos de precios de WooCommerce, las coincidencias de filtro de precios y la ordenación por precio del índice de producto regional actual. Una página compartida no serializa esos valores de faceta regionales: el navegador los obtiene mediante una actualización privada de Faceted Search.

Accesibilidad y comportamiento ante fallos

  • Los marcadores de carga anuncian Loading price o Loading purchase options.
  • Un marcador resuelto deja de comunicar que está ocupado.
  • Un marcador fallido mantiene un estado de texto neutral y nunca restaura una alternativa numérica de la caché de página.
  • Si JavaScript está bloqueado, la página compartida sigue conteniendo solo el estado de carga.
  • Si la hoja de estilos está bloqueada, el texto de carga sigue siendo comprensible sin el esqueleto visual.
  • Las opciones variables y los controles de compra no se vuelven utilizables hasta que se ha resuelto el estado regional actual.

La tienda siempre recalcula los importes comerciales en el servidor. El marcado del navegador es un resultado de presentación, no un precio de carrito aceptado.

Los productos compuestos de POM usan la misma regla. El HTML compartido no contiene precio principal, importe fijo regional, importe de componente, total ni formulario de compra habilitado en atributos, JSON o scripts en línea. La respuesta regional privada reconstruye el formulario de componentes y los totales para la zona resuelta, y solo ese formulario resuelto puede habilitar la opción de añadir al carrito. El carrito y el pago crean entonces una cotización de servidor nueva a partir de la configuración guardada y el contexto de país actual.

Páginas que no usan la hidratación de catálogo

El carrito, el pago, Mi cuenta, las peticiones de sesión de WooCommerce, la administración, el correo electrónico, los feeds, las operaciones REST, los fragmentos del mini carrito y las URL con parámetros de consulta no usan marcadores de catálogo. Su salida permanece renderizada por el servidor porque puede depender de cantidades, cupones, impuestos, filtros, acciones, un mercado de exportación o una sesión autenticada.

Por tanto, el HTML universal compartido se aplica a URL públicas limpias y sin consulta. Las peticiones de búsqueda, filtro de precios, ordenación, acción y otras peticiones guiadas por consulta deben omitir la caché de página compartida y renderizar su resultado regional actual. Las integraciones de caché pueden eliminar parámetros aprobados de solo seguimiento antes de esta decisión, pero no deben eliminar parámetros funcionales de catálogo o de WooCommerce.

Las respuestas regionales de WooCommerce REST y de la Store API se envían siempre con directivas de caché privadas y sin almacenamiento para el navegador, la CDN y el sustituto. El origen también elimina los validadores de respuesta antes de servirlas. Una CDN o un proxy inverso debe conservar estas directivas y no debe crear su propia regla de caché para las rutas de la API de WooCommerce.

El carrito y el pago vuelven a resolver el país actual del cliente antes de calcular los totales. Consulta Comprar con precios por zona de país para cambios de país, productos no disponibles, comportamiento del mini carrito e historial de pedidos.

Los datos estructurados de producto cacheables siguen usando el precio base canónico de WooCommerce y la divisa de la tienda. No se modifican por la IP del visitante en el navegador.

Los feeds genéricos también usan el precio base canónico. Un exportador XML o de catálogo específico de un mercado debe solicitar su contexto explícito de zona de país en el servidor; nunca se localiza a partir de la IP de un visitante ni se hidrata mediante JavaScript.

Comprobar si la caché compartida está lista

  1. Ve a Tools → Site Health → Status.
  2. Busca Country pricing universal cache safety.
  3. POM Cache almacena automáticamente el HTML compartido cuando el resultado es correcto.
  4. Si el resultado recomienda una omisión, POM Cache mantiene las páginas de producto y catálogo fuera de la caché compartida hasta que cada integración activa enumerada tenga su propia presentación neutral.

La comprobación de seguridad se mantiene conservadora cuando observa un tipo de producto no compatible, un motor de fijación de precios por país en conflicto, una geolocalización de WooCommerce compatible con caché, una cadena de proxy que no supera la validación estricta configurada, un índice de producto de precio por país ausente, un contrato de integración de POM Theme desactualizado, una integración de precios cuyos datos públicos aún no se han neutralizado o una omisión de caché explícita del operador.

La gestión predeterminada del proxy de compatibilidad no hace que el HTML universal sea inseguro por sí misma: el documento compartido no contiene ningún importe específico de país y la respuesta regional permanece privada y no cacheable. Site Health sigue informando de la compensación de seguridad de compatibilidad como una recomendación, porque una cabecera de reenvío no autenticada puede seleccionar una zona de país diferente. Configura proxies de confianza cuando el despliegue requiera que esa señal de país esté autenticada.

Una tienda migrada también usa comprobaciones de seguridad automáticas. La migración, las ediciones posteriores de zonas y el registro de observación comercial no bloquean el HTML universal por sí mismos. Mientras el plugin de fijación de precios por país heredado esté activo, la comprobación de conflicto impide la caché compartida; una vez deshabilitado el plugin heredado, POM Cache puede empezar a almacenar el HTML neutral en cuanto todas las comprobaciones de seguridad activas se superen.

Seleccionar Geolocate (with page caching support) en WooCommerce añade el bloqueador woocommerce_cache_geolocation y, por tanto, deshabilita el almacenamiento de HTML compartido. Selecciona Geolocate para usar el HTML universal. Esto es independiente de la omisión manual de emergencia de POM Cache.

Almacenamiento automático en caché y omisión de emergencia

  1. Revisa la recomendación de proxy y acepta el modo de compatibilidad de configuración cero para el perfil de riesgo de la tienda o configura el modo estricto de proxy de confianza.

  2. Confirma que Country pricing universal cache safety es correcta e inspecciona el modo actual:

    wp pomtweaks country-zone-pricing rollout --url=https://example.test

  3. Cuando cache_mode=automatic y technical_ready=yes, no se requiere ningún comando de activación. Solicita dos veces una URL limpia y anónima de producto o de catálogo y confirma que POM Cache creó y reutilizó el archivo de HTML neutral.

  4. Purga la caché del origen y de la CDN después de cambiar el modo o corregir un bloqueador, y luego valida una URL limpia de producto desde dos regiones reales. Confirma que ambos documentos fuente son neutrales y que cada navegador hidrata el resultado regional correcto.

  5. Mantén el resolvedor regional, la Store API, el carrito, el pago y otras respuestas privadas de WooCommerce fuera de toda caché compartida.

Para volver inmediatamente al modo de omisión durante un incidente, ejecuta:

wp pomtweaks country-zone-pricing rollout --force-bypass --reason=INCIDENT-REFERENCE --yes --url=https://example.test

Después de resolver el incidente, vuelve a las comprobaciones de seguridad automáticas con:

wp pomtweaks country-zone-pricing rollout --automatic --yes --url=https://example.test

La antigua acción --enable-universal sigue siendo un alias de compatibilidad de --automatic. Ninguna de las acciones anula una comprobación de seguridad fallida: POM Cache se reanuda solo cuando el resultado activo es correcto.

Verificar una tienda

  1. Abre la misma URL limpia de catálogo desde dos zonas de país configuradas.
  2. Usa View source antes de que JavaScript modifique la página.
  3. Confirma que ambas fuentes contienen marcadores de precio por país neutrales y ningún importe regional de producto en el marcado de precio visible, los datos de variación, los atributos, el JSON o los scripts en línea.
  4. Confirma que cada navegador muestra el precio regional esperado después de la carga.
  5. Inspecciona la petición regional y una petición de producto representativa de la Store API. Confirma que ambas están marcadas como privadas y que no las almacenan las cachés del navegador, la CDN ni el sustituto.
  6. Prueba una oferta regional, un producto no disponible y un producto variable con variaciones disponibles y no disponibles. Confirma que una selección disponible habilita Add to cart después de la carga regional, mientras que una selección no disponible permanece bloqueada.
  7. Inserta otra tarjeta de producto después de que la página cargue y confirma que se resuelve sin recargar la página.
  8. Bloquea temporalmente la petición regional y confirma que la página muestra Price unavailable después de un reintento.
  9. Si la página usa POM Faceted Search, compara el rango de precios, el conjunto de resultados filtrado y el orden de menor a mayor en dos zonas con precios regionales intencionadamente diferentes. Confirma que la respuesta de Faceted Search incluye cabeceras de caché privadas y sin almacenamiento.
  10. Para un producto compuesto de POM, confirma que la fuente compartida no contiene formulario de compra ni importe de configuración y verifica que el formulario resuelto permanece deshabilitado hasta que su primera cotización regional es válida y que los totales del carrito se recalculan después de cambiar de país.

Solución de problemas

Un precio permanece en su estado de carga

Confirma que el índice de producto de zona de país y la comprobación de Site Health Country pricing universal cache safety están disponibles. Luego verifica que el navegador puede acceder al servicio de precios regionales de la tienda y que ninguna regla de CDN almacena o bloquea esa respuesta.

Aparece un importe en caché antes de la carga

Purga la caché de la página inmediatamente y mantén omitidas las páginas de producto de WooCommerce. Revisa la salida del tema, los bloques, las analíticas y el SEO en busca de un precio numérico personalizado que no use el filtro de HTML de precio normal de WooCommerce.

La insignia de oferta o el botón están obsoletos

Confirma que la tarjeta contiene un marcador de precio por país y que el tipo de producto activo aparece como compatible en Site Health. Las plantillas de tarjeta personalizadas que no exponen la salida de precio normal de WooCommerce requieren una integración compatible antes de que la caché compartida sea segura.

No se puede seleccionar una variación

Espera a que termine el estado de carga. Si la respuesta regional indica que la variación no está disponible, selecciona otra opción. Si todas las opciones permanecen deshabilitadas, revisa las filas de precios por país del producto y el índice de producto.