El problema real
El catálogo completo de Firstline, 17.500 SKUs con sus precios y su stock, era visible para cualquiera. Debía verlo solo un comprador mayorista aprobado, y el registro que ya existía no estaba lo bastante reforzado para sostener eso: faltaban verificaciones de nonce y de capacidades, la verificación de email no era obligatoria y no había una máquina formal de estados del comprador.
Es una tienda en producción, con compradores activos y sincronización en vivo con Cin7, así que propuse una hoja de ruta por fases y la hice aprobar antes de tocar nada: estabilizar caché y respaldos, auditar la autenticación, definir los estados de acceso, optimizar el filtrado, bloquear el catálogo y solo entonces elegir el plugin de precios mayoristas. El orden es deliberado. No se deciden los precios antes de resolver quién puede verlos.
Por la misma razón nada se probó contra la tienda real. Levanté una instalación local de WordPress en Docker y ahí verifiqué cada estado de acceso antes de proponer el cambio.
El flujo lo diseñé completo antes de implementarlo: el registro y una pantalla propia para cada estado, pendiente, rechazado y bloqueado, además de la ruta de verificación. Un comprador no aprobado tiene que llegar a la pantalla que le corresponde y no a una rota, que es el mismo problema de acceso visto desde el otro lado.
El acceso se rige por el estado del usuario y no por roles nuevos de WordPress, que habrían creado riesgo de migración sobre una base de usuarios con roles mixtos. Vive en un plugin propio y no en el tema, para poder revertirlo con seguridad. Y como el estado, los precios, el stock y el carrito son todos dinámicos, saqué las rutas del catálogo privado de la caché de página por completo: ahí el rendimiento se apoya en consultas por taxonomía y caché de objetos.
El cliente pausó el proyecto antes del QA final, así que el bloqueo de catálogo y el flujo de estados quedaron construidos y sin publicar. La tienda que sigue en línea es la anterior, todavía con el catálogo abierto.
Tecnologías
- Plataforma: WordPress, WooCommerce
- Lenguajes: PHP, JavaScript, HTML, CSS
- Integraciones: Cin7, plugin de precios mayoristas, caché de página y de objetos
- Entorno local: Docker (instalación de WordPress para pruebas)
- Áreas de enfoque: Diseño de flujo de compradores, control de acceso, endurecimiento de autenticación, política de caché, rendimiento de consultas






