// 1. CALCULA E EXIBE AS INFORMAÇÕES (TEMPO ESTIMADO PÚBLICO / TOTAL LIDO APENAS ADMIN) function calcular_e_exibir_tempo_leitura($content) { if (!is_single() && !is_home() && !is_archive() && !is_search()) { return $content; } // --- CÁLCULO DO TEMPO ESTIMADO (PÚBLICO) --- $total_palavras = str_word_count(strip_tags($content)); $minutos_estimados = ceil($total_palavras / 200); $texto_estimado = "⏱️ Tempo estimado: " . ($minutos_estimados <= 1 ? "1 minuto" : $minutos_estimados . " minutos"); // --- CÁLCULO DO TOTAL HISTÓRICO (APENAS PARA ADMIN) --- $texto_total = ''; if (current_user_can('manage_options')) { // Verifica se o usuário é administrador $post_id = get_the_ID(); $total_segundos_salvos = (int) get_post_meta($post_id, '_total_tempo_lido_segundos', true); if ($total_segundos_salvos < 60) { $texto_total = "Nenhum minuto lido ainda"; } else { $total_minutos = floor($total_segundos_salvos / 60); if ($total_minutos < 60) { $texto_total = "Total lido: " . $total_minutos . " " . ($total_minutos == 1 ? "min" : "minutos"); } else { $total_horas = round($total_minutos / 60, 1); $texto_total = "Total lido: " . $total_horas . " " . ($total_horas == 1 ? "hora" : "horas"); } } } // --- MONTAGEM DO LAYOUT --- $html_infos = '
'; if (is_single()) { // Post completo: Caixinha bonita $html_infos .= '
'; $html_infos .= '
' . $texto_estimado . '
'; if (!empty($texto_total)) { $html_infos .= '
📊 ' . $texto_total . ' (Apenas Admin)
'; } $html_infos .= '
'; } else { // Índice (Home, categorias, etc.): Texto discreto $html_infos .= '
'; $html_infos .= '
' . $texto_estimado . '
'; if (!empty($texto_total)) { $html_infos .= '
📊 ' . $texto_total . ' (Apenas Admin)
'; } $html_infos .= '
'; } $html_infos .= '
'; return $html_infos . $content; } add_filter('the_content', 'calcular_e_exibir_tempo_leitura'); // 2. SCRIPT JAVASCRIPT CORRIGIDO (Pausa se a aba for oculta + Teto de 10 min) function script_rastrear_tempo_leitura() { if (is_single()) { $post_id = get_the_ID(); $ajax_url = admin_url('admin-ajax.php'); ?> 0 && $segundos_novos > 0) { $total_atual = (int) get_post_meta($post_id, '_total_tempo_lido_segundos', true); update_post_meta($post_id, '_total_tempo_lido_segundos', $total_atual + $segundos_novos); } wp_die(); } add_action('wp_ajax_registrar_tempo_leitura', 'registrar_tempo_leitura_callback'); add_action('wp_ajax_nopriv_registrar_tempo_leitura', 'registrar_tempo_leitura_callback'); // 4. ADICIONAR COLUNA COM O TOTAL DE TEMPO LIDO NO PAINEL ADMIN (WP-ADMIN) function adicionar_coluna_tempo_leitura($columns) { $columns['tempo_lido_historico'] = '📊 Total Lido (Histórico)'; return $columns; } add_filter('manage_posts_columns', 'adicionar_coluna_tempo_leitura'); function exibir_conteudo_coluna_tempo_leitura($column, $post_id) { if ($column === 'tempo_lido_historico') { $total_segundos = (int) get_post_meta($post_id, '_total_tempo_lido_segundos', true); if ($total_segundos < 60) { echo '0 min'; } else { $total_minutos = floor($total_segundos / 60); if ($total_minutos < 60) { echo '' . $total_minutos . ' min'; } else { $total_horas = round($total_minutos / 60, 1); echo '' . $total_horas . ' ' . ($total_horas == 1 ? 'hora' : 'horas') . ''; } } } } add_action('manage_posts_custom_column', 'exibir_conteudo_coluna_tempo_leitura', 10, 2); // 5. EXIBIR TOTAL GERAL DE TEMPO DE LEITURA DE TODOS OS POSTS NO PAINEL function exibir_total_geral_tempo_leitura() { $screen = get_current_screen(); // Executa apenas na tela de listagem de posts if ($screen && $screen->id === 'edit-post') { global $wpdb; // Soma todos os segundos salvos no banco de dados para a meta chave $total_segundos = (int) $wpdb->get_var( "SELECT SUM(CAST(meta_value AS UNSIGNED)) FROM {$wpdb->postmeta} WHERE meta_key = '_total_tempo_lido_segundos'" ); if ($total_segundos > 0) { $dias = floor($total_segundos / 86400); $horas = floor(($total_segundos % 86400) / 3600); $minutos = floor(($total_segundos % 3600) / 60); $segundos = $total_segundos % 60; $tempo_formatado = array(); if ($dias > 0) $tempo_formatado[] = "{$dias} dias"; if ($horas > 0 || $dias > 0) $tempo_formatado[] = "{$horas} horas"; if ($minutos > 0 || $horas > 0) $tempo_formatado[] = "{$minutos} min"; $tempo_formatado[] = "{$segundos} seg"; $texto_final = implode(', ', $tempo_formatado); echo '
📈 Tempo Total de Leitura Acumulado (Todos os Artigos): ' . $texto_final . ' (' . number_format($total_segundos, 0, ',', '.') . ' segundos no total)
'; } } } add_action('admin_notices', 'exibir_total_geral_tempo_leitura');

Este portal de notícias já teve 0 horas e 30 minutos de leitura.