Parte del caso Libelium + iris360: De un cambio estético a un cambio de arquitectura

Separar la página del dato técnico con product_device y product_spec en WordPress

PUBLICADO: 2026-10-07ACTUALIZADO: 2026-10-14
AUTOR: Manuel PrietoREVISADO POR: Manuel Prieto
Arquitectura

Corriges el peso de un producto en su ficha técnica y la página enseña el valor nuevo. Google, mientras tanto, sigue leyendo el viejo. Me pasó con Libelium One, y la causa era que el mismo dato vivía en dos sitios.

Este post cuenta cómo lo resolví separando la página pública del dato técnico. El contexto general está en el caso de la reescritura sin perder URLs.

La carta y la ficha de cocina

Una carta de restaurante dice cómo se llama el plato, lo describe y lo vende. La ficha de cocina anota gramos, tiempos y alérgenos. Si el cocinero corrige la ficha y nadie toca la carta, el camarero sigue cantando el plato viejo.

Una web de producto tiene las dos. La página es la carta. El dato técnico es la ficha. Lo que hay que decidir es cuál de las dos manda.

Un cajón con cuatro cosas dentro

La web antigua guardaba casi todo lo editorial en un único tipo de contenido. Casos de éxito, noticias, artículos y whitepapers convivían en 306 entradas bajo una misma categoría, y la URL de los casos era una vista de archivo que mezclaba contenido corporativo con estudios comerciales.

Al montar la web nueva lo partí. Cada familia recibió su tipo de contenido y su ruta, y un redireccionamiento 301 lleva las URLs viejas a las nuevas. En total el sitio acabó con 13 tipos de contenido personalizadosGlosarioCPT (Custom Post Type)Tipo de contenido personalizado de WordPress, registrado con register_post_type, que añade a las entradas y páginas nativas tipos propios como un producto, una certificación o un caso de éxito. Cada CPT define sus campos, sus URLs y sus taxonomías. Separar los tipos de contenido permite modelar datos con relaciones claras, por ejemplo una página pública de producto enlazada a una ficha técnica sin URL propia.Ver término completo →. Cinco tienen URL pública. Los otros ocho son almacenes de datos que ninguna visita abre directamente, como los catálogos de sondas, radios y certificaciones.

La página y su ficha

Con los productos fui un paso más allá. Cada producto tiene una página con su hero, sus secciones y su posicionamiento, y una ficha técnica aparte con la matriz de especificaciones, las opciones de comunicación, los descargables y las listas de sondas, radios y certificaciones compatibles. La ficha no tiene URL ni la necesita. Es un tipo headlessGlosarioHeadlessModalidad de ejecución de un software, navegador (como Chromium, Firefox o WebKit) o arquitectura de sistema sin interfaz gráfica de usuario (GUI). En el ámbito de la automatización y la navegación agéntica por IA, un navegador headless ejecuta el motor de renderizado y JavaScript en segundo plano (vía herramientas como Playwright o Puppeteer), exponiendo directamente el DOM y el Árbol de Accesibilidad para inspección, scraping estructurado y ejecución de acciones programáticas sin cargar elementos visuales en pantalla.Ver término completo → que los widgets leen mientras pintan la página.

El vínculo entre las dos es un puntero que guarda el producto con el ID de su ficha. No hay claves foráneas ni integridad referencial. Es una fila de WordPress apuntando a otra.

Cargando diagrama...

Los tres catálogos cuelgan de la ficha y no de la página, y cada elemento puede servir a varias fichas. Una misma certificación sirve a Plug & Sense! y a Waspmote.

Esa compartición muerde. Al preparar la ficha de Smart Spot busqué su tecnología LoRaWAN por título, el script encontró la de Libelium One y la sobrescribió. La restauré y creé una propia. Desde entonces cada producto usa títulos únicos en los catálogos.

Dos copias del mismo dato

Hasta entonces el dato técnico vivía en la página y en la ficha. Los dos guardaban el mismo juego de campos, y el editor del producto leía los suyos sin seguir ningún enlace.

Reescribí la ficha de Libelium One con su datasheet y apliqué un script que solo tocaba la ficha. La página mostró 135 × 135 × 60 mm y 490 g. El marcado estructurado, en cambio, seguía sirviendo valores viejos.

DatoLo que mostraba la páginaLo que servía el JSON-LDGlosarioJSON-LDFormato de datos estructurados basado en JSON que describe el contenido de una página con el vocabulario de Schema.org. Se inserta en un bloque <script type="application/ld+json"> del HTML. Buscadores y asistentes de IA lo leen para identificar entidades como un producto, un artículo o una ruta de navegación sin interpretar el diseño de la página.Ver término completo →
Dimensiones135 × 135 × 60 mm120 × 80 × 40 mm
Peso490 g280 g
ProtecciónIP66/67/68IP67 / NEMA 4X

El script había cambiado una copia y el generador de JSON-LD leía la otra. Lo cuento con más detalle en el artículo sobre llms.txt y JSON-LD.

Una sola fuente

Antes de decidir medí. En Plug & Sense!, Smart Spot, Waspmote y Air Quality Station las dos copias eran idénticas. En Libelium One la del producto estaba desactualizada y guardaba, solo allí, dos enlaces a documentos que daban 404.

Decidí que la ficha técnica sea la única fuente del dato. La página conserva su contenido, el puntero, un resumen corto para SEO y llms.txt, el título SEO y las taxonomías. Añadí una función que resuelve el puntero y devuelve la propia página si no hay ficha enlazada, y la usé en el generador de SEO y en los widgets de conectividad y certificaciones.

El orden importaba. Desplegué primero el código, porque borrar las copias del producto antes habría dejado el JSON-LD vacío. Después hice una copia de contenido, escribí los datos solo en la ficha y borré las copias técnicas de las cinco fichas. Con curl comprobé que las cinco páginas respondían 200 y que el JSON-LD conservaba sus propiedades adicionales, ya leídas desde la ficha. Los valores viejos de Libelium One dejaron de salir.

Queda un hueco. El editor de la página sigue mostrando esos campos, y alguien podría volver a crear duplicados. Falta ocultarlos cuando existe ficha enlazada. Hasta entonces la regla de escribir solo en la ficha vive en mis scripts de limpieza.

Los valores que fui escribiendo siguen una regla de verdad entre datasheet y web antigua, que explico en otro artículo.

Lo que me llevo

Cuando un dato tiene dos copias, tarde o temprano una miente, y casi siempre la que lee la máquina. Antes de tocar nada pregúntate quién lee cada copia. Decide una fuente, mide el estado previo, cambia primero el código que lee y borra después.

El principio general está en la lección Separar la página pública y la entidad de datos.

Preguntas frecuentes sobre separar la página del dato técnico