refactor(adsense): remove dead code + PageSpeed CSS defer

- Remove unused roi_should_disable_auto_ads() function
- Remove enable_page_level_ads code (Auto Ads disabled in Google panel)
- Defer non-critical CSS with media=print pattern (Fase 4.2 PageSpeed)
- Fix roi-accessibility dependency: roi-theme-style -> roi-main-style

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
FrankZamora
2025-11-27 15:38:49 -06:00
parent 2acce34d9e
commit d7915d372b
3 changed files with 67 additions and 49 deletions

View File

@@ -5,7 +5,6 @@
* Funciones para usar en templates:
* - roi_render_ad_slot('post-top')
* - roi_render_rail_ads() - Para los margenes laterales del viewport
* - roi_should_disable_auto_ads()
*/
if (!defined('ABSPATH')) {
@@ -131,35 +130,8 @@ add_action('wp_footer', function() {
echo roi_render_rail_ads();
}, 50);
/**
* Verifica si se debe deshabilitar Auto Ads
*/
function roi_should_disable_auto_ads(): bool
{
global $container;
if ($container === null) {
return false;
}
try {
$repository = $container->getComponentSettingsRepository();
$settings = $repository->getComponentSettings('adsense-placement');
$isEnabled = ($settings['visibility']['is_enabled'] ?? false) === true;
$disableAutoAds = ($settings['visibility']['disable_auto_ads'] ?? true) === true;
return $isEnabled && $disableAutoAds;
} catch (\Throwable $e) {
return false;
}
}
/**
* Carga el script principal de AdSense
*
* IMPORTANTE: Si disable_auto_ads está activo, se añade código para
* deshabilitar Auto Ads (page-level ads) de Google.
*/
function roi_enqueue_adsense_script(): void
{
@@ -183,25 +155,13 @@ function roi_enqueue_adsense_script(): void
}
$delayEnabled = ($settings['forms']['delay_enabled'] ?? true) === true;
$disableAutoAds = ($settings['visibility']['disable_auto_ads'] ?? true) === true;
// Script principal de AdSense
if ($delayEnabled) {
echo '<script type="text/plain" data-adsense-script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=' . esc_attr($publisherId) . '" crossorigin="anonymous"></script>' . "\n";
} else {
echo '<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=' . esc_attr($publisherId) . '" crossorigin="anonymous"></script>' . "\n";
}
// Deshabilitar Auto Ads (page-level ads) si está configurado
if ($disableAutoAds) {
echo '<script>
(adsbygoogle = window.adsbygoogle || []).push({
google_ad_client: "' . esc_js($publisherId) . '",
enable_page_level_ads: false
});
</script>' . "\n";
}
} catch (\Throwable $e) {
if (defined('WP_DEBUG') && WP_DEBUG) {
error_log('ROI AdSense: ' . $e->getMessage());

View File

@@ -11,6 +11,56 @@ if (!defined('ABSPATH')) {
exit;
}
/**
* CSS no críticos que se cargarán de forma diferida (Fase 4.2 PageSpeed)
*
* Estos CSS se cargan con media="print" y onload="this.media='all'"
* para evitar bloquear el renderizado inicial.
*
* @since 1.0.21
*/
define('ROI_DEFERRED_CSS', [
'roi-badges',
'roi-pagination',
'roi-generic-tables',
'roi-video',
'roi-animations',
'roi-youtube-facade',
'roi-tables-apu',
]);
/**
* Add async loading to deferred stylesheets (Fase 4.2 PageSpeed)
*
* Converts media="print" to media="all" after load to prevent render-blocking.
*
* @since 1.0.21
* @param string $html The link tag HTML.
* @param string $handle The stylesheet handle.
* @return string Modified link tag.
*/
function roi_add_deferred_css_onload($html, $handle) {
if (!in_array($handle, ROI_DEFERRED_CSS, true)) {
return $html;
}
// Add onload attribute to switch media to "all" after load
$html = str_replace(
"media='print'",
"media='print' onload=\"this.media='all'\"",
$html
);
// Add noscript fallback for users without JavaScript
$href = preg_match('/href=[\'"]([^\'"]+)[\'"]/', $html, $matches) ? $matches[1] : '';
if ($href) {
$html .= '<noscript><link rel="stylesheet" href="' . esc_url($href) . '"></noscript>' . "\n";
}
return $html;
}
add_filter('style_loader_tag', 'roi_add_deferred_css_onload', 10, 2);
/**
* Enqueue typography system
*
@@ -113,21 +163,23 @@ function roi_enqueue_fase2_styles() {
// @see Public/Hero/Infrastructure/Ui/HeroRenderer.php
// Category Badges CSS - Clase genérica (Issue #62)
// DIFERIDO: Fase 4.2 PageSpeed - media='print' + onload
wp_enqueue_style(
'roi-badges',
get_template_directory_uri() . '/Assets/css/css-global-badges.css',
array('roi-bootstrap'),
filemtime(get_template_directory() . '/Assets/css/css-global-badges.css'),
'all'
'print' // Diferido para no bloquear renderizado
);
// Pagination CSS - Estilos personalizados (Issue #64)
// DIFERIDO: Fase 4.2 PageSpeed - below the fold
wp_enqueue_style(
'roi-pagination',
get_template_directory_uri() . '/Assets/css/css-global-pagination.css',
array('roi-bootstrap'),
filemtime(get_template_directory() . '/Assets/css/css-global-pagination.css'),
'all'
'print' // Diferido para no bloquear renderizado
);
// Post Content Typography y Related Posts - DESHABILITADOS
@@ -232,12 +284,13 @@ function roi_enqueue_generic_tables() {
}
// Generic Tables CSS
// DIFERIDO: Fase 4.2 PageSpeed - below the fold
wp_enqueue_style(
'roi-generic-tables',
get_template_directory_uri() . '/Assets/css/css-global-generic-tables.css',
array('roi-bootstrap'),
ROI_VERSION,
'all'
'print' // Diferido para no bloquear renderizado
);
}
@@ -256,12 +309,13 @@ function roi_enqueue_video_styles() {
}
// Video CSS
// DIFERIDO: Fase 4.2 PageSpeed - below the fold
wp_enqueue_style(
'roi-video',
get_template_directory_uri() . '/Assets/css/css-global-video.css',
array('roi-bootstrap'),
ROI_VERSION,
'all'
'print' // Diferido para no bloquear renderizado
);
}
@@ -307,10 +361,11 @@ add_action('wp_enqueue_scripts', 'roi_enqueue_main_javascript', 11);
*/
function roi_enqueue_accessibility() {
// Accessibility CSS
// CORREGIDO: Fase 4.2 PageSpeed - dependencia 'roi-theme-style' no existía
wp_enqueue_style(
'roi-accessibility',
get_template_directory_uri() . '/Assets/css/css-global-accessibility.css',
array('roi-theme-style'),
array('roi-main-style'), // Corregido: 'roi-theme-style' -> 'roi-main-style'
ROI_VERSION,
'all'
);
@@ -384,12 +439,13 @@ function roi_enqueue_theme_styles() {
// );
// Theme Animations
// DIFERIDO: Fase 4.2 PageSpeed - mejoras visuales no críticas
wp_enqueue_style(
'roi-animations',
get_template_directory_uri() . '/Assets/css/css-global-animations.css',
array('roi-bootstrap'), // Cambiado de 'roi-theme' a 'roi-bootstrap'
array('roi-bootstrap'),
'1.0.0',
'all'
'print' // Diferido para no bloquear renderizado
);
// Theme Responsive Styles
@@ -436,12 +492,13 @@ add_action('wp_enqueue_scripts', 'roi_enqueue_theme_styles', 13);
*/
function roi_enqueue_apu_tables_styles() {
// APU Tables CSS
// DIFERIDO: Fase 4.2 PageSpeed - below the fold
wp_enqueue_style(
'roi-tables-apu',
get_template_directory_uri() . '/Assets/css/css-tablas-apu.css',
array('roi-bootstrap'),
ROI_VERSION,
'all'
'print' // Diferido para no bloquear renderizado
);
}

View File

@@ -50,12 +50,13 @@ final class YoutubeFacadeHooksRegistrar
return;
}
// DIFERIDO: Fase 4.2 PageSpeed - below the fold
wp_enqueue_style(
'roi-youtube-facade',
get_template_directory_uri() . '/Public/YoutubeFacade/Infrastructure/Ui/Assets/Css/youtube-facade.css',
[],
ROI_VERSION,
'all'
'print' // Diferido para no bloquear renderizado
);
wp_enqueue_script(