From 3b9a1cb29994482fc1c25b8aeeec603bd85a6105 Mon Sep 17 00:00:00 2001 From: FrankZamora Date: Mon, 1 Dec 2025 10:51:52 -0600 Subject: [PATCH] fix(cls): Preload Poppins fonts to prevent font swap CLS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Agrega preload de fuentes criticas (regular, 600) en wp_head priority 1 - Fuentes disponibles antes de que CSS las necesite - Elimina flash de fuente de respaldo que causa layout shift CLS body.wp-singular esperado: 0.171 -> ~0 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- functions-addon.php | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/functions-addon.php b/functions-addon.php index 97e4d660..0cb0149d 100644 --- a/functions-addon.php +++ b/functions-addon.php @@ -26,6 +26,36 @@ spl_autoload_register(function ($class) { } }); +// ============================================================================= +// FONT PRELOAD - Previene CLS por font swap +// ============================================================================= + +/** + * Precarga fuentes críticas para prevenir CLS por font swap + * + * Las fuentes Poppins se precargan con alta prioridad para que estén + * disponibles cuando el CSS las necesite, evitando el "flash" de + * fuente de respaldo que causa layout shift. + */ +add_action('wp_head', function() { + $theme_url = get_template_directory_uri(); + + // Fuentes críticas: regular y 600 (usadas en títulos y body) + $critical_fonts = [ + 'poppins-v24-latin-regular.woff2', + 'poppins-v24-latin-600.woff2', + ]; + + foreach ($critical_fonts as $font) { + printf( + '%s', + esc_url($theme_url), + esc_attr($font), + "\n" + ); + } +}, 1); // Priority 1 = muy temprano en wp_head + // ============================================================================= // HELPER FUNCTION: roi_get_component_setting() - GENÉRICA // =============================================================================