fix(adsense): registrar filtro the_content y corregir ancho de contenedor
- Registra filtro the_content para inyectar anuncios (post-top, post-bottom, content) - Corrige CSS del contenedor .roi-ad-slot con width:100% para evitar availableWidth=0 - Usa ContentAdInjector para insertar ads dentro del contenido 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -194,3 +194,65 @@ function roi_enqueue_adsense_script(): void
|
||||
}
|
||||
}
|
||||
add_action('wp_head', 'roi_enqueue_adsense_script', 5);
|
||||
|
||||
/**
|
||||
* Registra el filtro the_content para inyectar anuncios
|
||||
*/
|
||||
add_filter('the_content', 'roi_inject_content_ads', 100);
|
||||
|
||||
function roi_inject_content_ads(string $content): string
|
||||
{
|
||||
global $container;
|
||||
|
||||
// Solo en posts individuales
|
||||
if (!is_single() || !in_the_loop() || !is_main_query()) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
if ($container === null) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
try {
|
||||
$repository = $container->getComponentSettingsRepository();
|
||||
$settings = $repository->getComponentSettings('adsense-placement');
|
||||
|
||||
if (empty($settings) || !($settings['visibility']['is_enabled'] ?? false)) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
// Verificar exclusiones
|
||||
if (roi_is_ad_excluded($settings)) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
$renderer = $container->getAdsensePlacementRenderer();
|
||||
|
||||
// Inyectar anuncio al inicio (post-top)
|
||||
$postTopHtml = '';
|
||||
if ($settings['behavior']['post_top_enabled'] ?? false) {
|
||||
$postTopHtml = $renderer->renderSlot($settings, 'post-top');
|
||||
}
|
||||
|
||||
// Inyectar anuncio al final (post-bottom)
|
||||
$postBottomHtml = '';
|
||||
if ($settings['behavior']['post_bottom_enabled'] ?? false) {
|
||||
$postBottomHtml = $renderer->renderSlot($settings, 'post-bottom');
|
||||
}
|
||||
|
||||
// Inyectar anuncios dentro del contenido
|
||||
$injector = new \ROITheme\Public\AdsensePlacement\Infrastructure\Services\ContentAdInjector(
|
||||
$settings,
|
||||
$renderer
|
||||
);
|
||||
$content = $injector->inject($content);
|
||||
|
||||
return $postTopHtml . $content . $postBottomHtml;
|
||||
|
||||
} catch (\Throwable $e) {
|
||||
if (defined('WP_DEBUG') && WP_DEBUG) {
|
||||
error_log('ROI AdSense Content: ' . $e->getMessage());
|
||||
}
|
||||
return $content;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user