Cada uno con la medición que lo destapó y lo que se cambió. Todo está ya en vivo y verificado en la página real.
altaRendimiento
El hero (elemento LCP) lo difería LiteSpeed
Qué se midió. El fetchpriority="high" iba puesto sobre un GIF de 1×1: la foto se pedía después de domInteractive. LCP medido en perfil móvil Lighthouse: 11 500 ms.
Arreglado.data-no-lazy="1" en la cabecera. LCP ahora 2 460 ms (presupuesto 2 500).
altaRendimiento
Google Maps se cargaba en una página sin ningún mapa
Qué se midió. 374,5 KB comprimidos / 1,32 MB en memoria — la petición más pesada y la primera en arrancar. Ni un solo contenedor de mapa en el DOM.
Arreglado. Se retira la cola google-maps sólo en esta página.
mediaArquitectura
Las 10 fichas colgaban de /explore/, que es noindex
Qué se midió. 10 de 10 BreadcrumbList declaraban como padre https://whatsincabo.com/explore/ (noindex, follow), mientras el hub indexable no aparecía en la jerarquía.
Arreglado.wic-breadcrumb-schema.php admite ahora un hub por tipo. Las 10 apuntan a /transportation/.
mediaContenido
El texto decía que «la mayoría» hace servicio compartido
Qué se midió. La taxonomía propia del sitio dice 4 de 10 (TransCabo, Cabo Transfers, Cabo Airport Shuttle, Browns). Lo decían el artículo y la pregunta frecuente.
Arreglado. Cifra real en los dos sitios, con los cuatro nombres, y cada tarjeta declara ahora si lleva shuttle.
mediaContenido
Cero autoría, cero fecha, cero fuentes
Qué se midió. El gate de publicación del plan pide «author/editorial team» (L1104) y «fuentes visibles» (L1108). Un grep de editorial / updated / sources sobre el texto de la página devolvía 0.
Arreglado. Firma editorial enlazada a /about-us/, fecha de última revisión tomada de la fecha real de la página, y de dónde sale cada dato.
mediaSchema
Ninguna entidad editorial en el marcado
Qué se midió. 0 Organization, 0 publisher, 0 author. Las páginas hermanas sí los emiten.
Arreglado.publisher + nodo Organization con el mismo @id del resto del sitio, dateModified y enlace CollectionPage↔ItemList. Sin reactivar el rich snippet de Rank Math.
mediaContenido
Las 10 tarjetas decían «Cabo San Lucas»
Qué se midió. Incluida la de Cabo T&T, cuyo propio texto dice que la empresa es de San José del Cabo. Las diez cubren el mismo núcleo, así que la etiqueta no distinguía nada.
Arreglado. Etiqueta nueva: tipo de servicio + hasta dónde llega más allá del núcleo. Seis dicen «Across Los Cabos», cuatro «Los Cabos + East Cape, Todos Santos & La Paz».
mediaImágenes
Las 10 fotos de tarjeta sin srcset ni sizes
Qué se midió. Un único fichero de 768 px para todos los dispositivos, con width/height escritos a mano que no eran los del fichero.
Arreglado. Generadas con srcset y un sizes por foto calculado sobre el recorte (cover), no sobre el hueco, y sobre los tres regímenes medidos de la rejilla (3, 2 y 1 columna).
mediaImágenes
WordPress anteponía sizes="auto" y se saltaba ese cálculo
Qué se midió. Desde WP 6.7, sizes="auto" manda usar el ancho de caja — justo el número equivocado con object-fit: cover. Además marcaba la foto de la primera empresa como candidata a LCP.
Arreglado. Desactivados wp_img_tag_add_auto_sizes y wp_get_loading_optimization_attributes en esta página.
bajaContenido
4 de 10 descripciones cortadas a mitad de palabra
Qué se midió. «…regional tran…», «…point-to-point transportation i…». Corte por número de caracteres.
Arreglado. Corte por palabra completa.
bajaMovil
8 cadenas del trayecto desaparecían a ≤1100 px
Qué se midió. Las 4 zonas y las 4 descripciones de las paradas. Ese texto no existía en ninguna otra parte de la página, así que se iba sin equivalente.
Arreglado. Una frase bajo el trayecto que lo recoge entero y se lee a cualquier ancho.
bajaAccesibilidad
El trayecto decía «scroll sideways» y no se desliza
Qué se midió.tabindex="0", role="group" y ese aria-label, con scrollWidth == clientWidth medido de 320 a 1920 px. Parada de teclado que no llevaba a nada e instrucción falsa.
Arreglado. Los tres atributos fuera.
mediaAccesibilidad
«Read more» seguía visible y enfocable tras ocultarse
Qué se midió.boton.hidden = true perdía contra un display: inline-flex. Medido: 131×49 px, tabulable, con el foco puesto y aria-expanded="true".
Arreglado.[hidden] { display: none !important }. Verificado: 0×0 y display: none tras pulsar.
mediaAccesibilidad
Ningún indicador de foco en los enlaces de la página
Qué se midió. Se compararon píxel a píxel los recortes con foco y sin foco: idénticos en los enlaces del artículo, en el CTA y en las semillas.
Arreglado. Contorno de 3 px con el mismo verde que ya usan el muro y las guías; crema sobre la franja oscura.
bajaAccesibilidad
Contraste 3,25:1 en «(SJD)»
Qué se midió.rgba(30,26,23,.5) sobre el fondo real #f4f4f4. AA pide 4,5:1.
Arreglado. Subido a .66. Medido ahora en 5,34:1.
Pendiente — toca al sitio entero o necesita material
No los he tocado a propósito: o cambian el tema y el pie de todas las páginas, o son una decisión tuya, o hacen falta ficheros que no tengo.
altaRendimiento
41 hojas de estilo bloqueando el render, 90,8 % del CSS sin usar
Qué se midió. 817 KB de CSS analizado, 75,5 KB realmente usados. 32 de las 41 hojas del <head> sin media query. Tres de ellas son de WooCommerce y esta página no tiene tienda.
Por qué no lo he tocado. Es configuración de LiteSpeed (CCSS/UCSS por plantilla) y afecta a TODO el sitio. Necesito tu visto bueno antes de tocarlo.
altaRendimiento
676 KB de fuentes por carga, de las que 59,5 KB son las de la marca
Qué se midió. Inter de WooCommerce 319 KB + Material Icons 126 KB + un SEGUNDO Inter desde Google 47 KB (la misma familia bajada dos veces).
Por qué no lo he tocado. Quitar la Inter de WooCommerce y cambiar Material Icons por SVG es un cambio de tema, no de esta página.
mediaAccesibilidad
No hay landmark <main> ni enlace de salto
Qué se midió. 10 paradas de teclado en escritorio y 12 en móvil antes del primer enlace del contenido.
Por qué no lo he tocado. Es el chrome compartido: el arreglo sirve para todo el sitio y hay que hacerlo en el tema.
mediaMovil
El buscador global se sale de la pantalla entre 321 y 396 px
Qué se midió. A 360 px queda 1 px visible de 38; a 340 px, cero. Lo empujan las señales WIC del header.
Por qué no lo he tocado. Header compartido. El rescate CSS existe pero arranca a 320 px en vez de a 404.
mediaMovil
Colisión de texto en el pie entre 768 y 880 px
Qué se midió. «Transportation» se monta sobre la columna de al lado; hasta 12 px de solape medidos con los rectángulos reales de texto.
Por qué no lo he tocado. Pie compartido de Elementor.
mediaIndexación
El hub y la guía de aeropuerto compiten por lo mismo
Qué se midió. Las dos son index, las dos están en el sitemap y listan las mismas 10 fichas (intersección 100 %).
Por qué no lo he tocado. Es una decisión editorial tuya: lo natural es que el hub sea el directorio y la guía el criterio de elección, y que la guía deje de repetir el listado entero.
mediaImágenes
Dos fotos de tarjeta se siguen pintando por encima de su resolución
Qué se midió. Cabo Airport Shuttle (494×305) y Cabo Baja Limousines (500×320). Las otras ocho ya están servidas correctas.
Por qué no lo he tocado. No hay recorte posible sin inventar píxeles: hacen falta ficheros nuevos de esas dos empresas.
Capturas reales
PC 1440 · tablet 834 · móvil 390, tomadas de la página en vivo como invitado.
Cabecera y página completa — PC 1440Página completa — tablet 834Página completa — móvil 390Trayecto y la frase nueva — PCLa frase que recoge lo que se ocultaba — PCTrayecto — móvil (el «(SJD)» ya con contraste)Firma editorial y procedencia — PCFirma editorial — móvilPreguntas con la cifra real y la firma editorial debajo — PCLo mismo en móvilTarjeta nueva — PCTarjeta nueva — móvil«Read more» antes de pulsar — móvilTras pulsar: el botón desaparece de verdad