get_pdo(), $db->get_prefix()); // Default period: 30 days $days = 30; // KPIs (v1) $kpis = $repository->getKPIs($days); $ctr_zero = $repository->getCTRZero($days, 10); $infraposicionados = $repository->getInfraposicionados($days, 3, 5, 10); // v2 Recommendations $zero_results = $repository->getZeroResults($days, 10); $quick_wins = $repository->getQuickWins($days, 10); $contenido_estrella = $repository->getContenidoEstrella($days, 10); $decay_content = $repository->getDecayContent($days, 10); $click_distribution = $repository->getClickDistribution($days); // v2 Paginated tables (first page) $top_searches = $repository->getTopSearches($days, 20); $top_clicks = $repository->getTopClicks($days, 20); $all_zero_results = $repository->getZeroResults($days, 20); $total_counts = $repository->getTotalCounts($days); // Site URL for building permalinks $site_url = rtrim(home_url(), '/'); // Format numbers for display $total_busquedas = number_format($kpis['total_busquedas']); $ctr = number_format($kpis['ctr'], 1) . '%'; $sin_resultados = number_format($kpis['pct_sin_resultados'], 1) . '%'; $pos_prom = number_format($kpis['pos_prom'], 1); ?>

0; $icon = $isPositive ? 'bi-arrow-up' : 'bi-arrow-down'; $color = $isPositive ? '#22c55e' : '#ef4444'; $sign = $value > 0 ? '+' : ''; return sprintf( ' %s%s%% vs anterior', $icon, $color, $sign, number_format($value, 1) ); }; ?>

20% clicks vs período anterior. Revisa si están desactualizados.', 'roi-apu-search'); ?>


'#FF8600', 'Pos 2' => '#1e3a5f', 'Pos 3' => '#2c5282', 'Pos 4' => '#3d6894', 'Pos 5' => '#0E2337', 'Pos 6+' => '#6b7280', ]; foreach ($click_distribution as $dist) : $color = $position_colors[$dist['posicion']] ?? '#6b7280'; ?>
clicks (%)
%
20) : ?>

//
20) : ?>
20) : ?>