/** * YakeddGraph SEO Repair Engine * * Must-Use Plugin — se carga automáticamente antes que temas y plugins. * No requiere activación. * * ▸ INSTALAR: subir este archivo a wp-content/mu-plugins/yakeddgraph-seo-repair.php * * Errores Semrush / Screaming Frog que corrige: * §1 Cabeceras HTTP de seguridad (X-Frame, nosniff, HSTS, Referrer-Policy) * §2 Múltiples H1 en the_content → normaliza a H2 * §3 Jerarquía de encabezados saltados (H3 sin H2, etc.) * §4 Links externos sin rel="noopener noreferrer" * §5 Hreflang: entradas múltiples · falta x-default · sin canonical * back-links noindex · regionales incoherentes (es-es → es) * §5a Paginación: URL de paginación múltiple * TranslatePress genera rel=prev/next por cada idioma; este módulo * deduplica y conserva solo el del idioma activo. * §6 Imágenes sin atributo alt * §7 Imágenes sin atributos width / height * §8 rel="prev" / rel="next" ausentes en archivos y blog paginados * §9 Canonicals: canonical no indexable * Cuando Yoast tiene manual un canonical que apunta a una página noindex, * el filtro lo corrige devolviendo el permalink propio del post. * §10 Códigos 4xx: redirecciones 301 automáticas * /product-2/{slug} → /producto/{slug} (base WC obsoleta) * /product/{slug} → /producto/{slug} (base WC inglés sin prefijo TP) * /en/product-2/{slug} → /en/product/{slug} * Fallback: slug → permalink canónico del product en WooCommerce * §11 Imágenes: texto ALT automático desde título del adjunto * Auto-genera alt descriptivo para imágenes con alt="" vacío. * §12 URLs con espacios * A) Prevención en nuevas subidas (sanitize_file_name) * B) Normalización %20 → - en HTML del contenido * C) Renombrado automático de archivos con espacio + redirect 301 * * Compatible con: Yoast SEO v14+, TranslatePress 2.x-3.x, WooCommerce, * Elementor, LiteSpeed Cache. * * @package YakeddGraph * @version 1.2.3 */ if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Señal para que el tema (inc/seo-technical.php) no ejecute sus hooks * cuando este MU Plugin ya está activo, evitando doble ejecución. */ define( 'YKG_SEO_MU_ACTIVE', true ); // Marca de verificación para asegurar que Screaming Frog no lee caché add_action('wp_footer', function() { echo "\n" . '' . "\n"; }, 9999); /* ════════════════════════════════════════════════════════════════ § 1 CABECERAS DE SEGURIDAD HTTP ════════════════════════════════════════════════════════════════ */ function ykg_security_headers() { if ( headers_sent() ) { return; } header( 'X-Frame-Options: SAMEORIGIN' ); header( 'X-Content-Type-Options: nosniff' ); header( 'Referrer-Policy: strict-origin-when-cross-origin' ); if ( is_ssl() ) { header( 'Strict-Transport-Security: max-age=31536000; includeSubDomains' ); } } add_action( 'send_headers', 'ykg_security_headers', 1 ); /* ════════════════════════════════════════════════════════════════ § 2 NORMALIZACIÓN H1 EN THE_CONTENT Las plantillas del tema ya incluyen su propio
gotmls domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u637224327/domains/yakeddgraph.com/public_html/wp-includes/functions.php on line 6131