🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir a limpeza automática agendada que não roda no WP-Optimize

Time Full Services Time Full Services
Tipo Performance & Velocidade
Nome do erro Limpeza agendada não roda no WP-Optimize EN: WP-Optimize scheduled cleanup not running
Severidade Atenção
Descrição A limpeza agendada do WP-Optimize não roda quando a opção está marcada, mas a otimização não acontece na frequência escolhida e o banco segue inchado. A causa é o WP-Cron, que só dispara em visitas, somado a fuso errado e evento duplicado. A correção é ativar um cron real do servidor e realinhar o agendamento.

O que é a limpeza automática agendada que não roda no WP-Optimize?

A limpeza automática agendada que não roda no WP-Optimize é a falha em que a opção marcada na aba Settings, em Scheduled clean-up settings, não executa as operações de banco na frequência escolhida: o site segue acumulando revisões de post, rascunhos automáticos, comentários de spam e transients expirados, e a tela Database mostra o mesmo overhead semana após semana. O WP-Optimize não tem relógio próprio. Ao salvar o agendamento, ele apenas registra o evento wpo_cron_event2 no WP-Cron, o agendador interno do WordPress, com a frequência escolhida em wpo_weekly_cron_event ou equivalente. Quem decide a hora de executar é o WP-Cron, que só é verificado quando uma página do site é carregada e que usa o fuso definido em Configurações, Geral. Por isso, em site de baixo tráfego ou com o WP-Cron desligado, a limpeza marcada para a madrugada simplesmente não acontece, mesmo com a caixa Enable scheduled clean-up and optimization ativa.

Como identificar

  • A opção “Enable scheduled clean-up and optimization” está marcada na aba Settings, mas a aba Database continua mostrando o mesmo “overhead” e o mesmo número de revisões semana após semana.
  • O painel mostra “Last automatic optimization” (Última otimização automática) com uma data antiga ou em branco, mesmo com a frequência configurada como semanal.
  • O comando wp cron event list não lista o evento wpo_cron_event2, ou lista com a coluna de próxima execução em horário já no passado.
  • A limpeza marcada para a madrugada só acontece no meio da manhã, no horário em que chega o primeiro visitante do dia, em vez do horário agendado.
  • O log em wp-content/uploads/wp-optimize/wpo-cron.log não registra novas execuções, sinal de que o evento agendado nunca é disparado.
Antes de começar: Antes de editar o wp-config.php, baixe uma cópia do arquivo. Definir DISABLE_WP_CRON como true sem criar o cron real do servidor deixa todas as tarefas agendadas paradas, inclusive posts agendados, e-mails e atualizações de segurança, e o site fica desprotegido sem nenhum aviso.

Como prevenir

  • Use um cron real do servidor a cada 15 minutos em vez de confiar no disparo por visita, para a limpeza agendada rodar mesmo nos dias de baixo tráfego
  • Sempre que marcar a opção em Scheduled clean-up settings, clique em Save settings e confira em wp cron event list se o evento wpo_cron_event2 foi mesmo criado
  • Defina o fuso horário em Configurações, Geral, para a sua cidade logo na instalação, antes de configurar a frequência da limpeza no WP-Optimize
  • Mantenha a opção “Keep a log of all optimizations” ativa para o registro em wpo-cron.log mostrar cada ciclo e você perceber rápido quando a limpeza para de rodar

Causa

  • O WP-Cron é verificado só quando alguém carrega uma página, então em site de baixo tráfego o evento wpo_cron_event2 fica parado esperando a próxima visita e a limpeza marcada para a madrugada nunca dispara naquele horário.
  • A constante DISABLE_WP_CRON está como true no wp-config.php, herança de um ajuste de performance, mas nenhum cron real do servidor foi criado, então o WordPress nunca executa o evento agendado do WP-Optimize.
  • Existem dois eventos wpo_cron_event2 registrados no WP-Cron, herança de uma reativação do plugin, e os dois competem entre si com horários próprios, deixando o agendamento inconsistente.
  • O fuso horário em Configurações, Geral, está em UTC em vez da cidade local, então o WP-Optimize agenda a próxima limpeza somando o intervalo a um relógio diferente e ela cai em horário deslocado.
  • Um plugin de cache de página inteira serve a home a partir do cache e o WordPress não roda o disparo do WP-Cron naquela visita, empurrando a otimização agendada para uma carga de página que escape do cache.
  • A opção "Enable scheduled clean-up and optimization" foi marcada mas o botão Save settings não foi clicado, então a frequência não chegou a gravar o evento wpo_cron_event2 no agendador.

Como resolver

  1. Confirme que o evento de limpeza está mesmo agendado: antes de qualquer ajuste, liste os eventos do WP-Cron e procure pelo evento do WP-Optimize. Se ele não aparecer, o agendamento não foi gravado e o problema está no salvamento das configurações, não no cron.
    wp cron event list | grep wpo_cron_event2
  2. Regrave o agendamento nas configurações do WP-Optimize: abra WP-Optimize, Settings, em Scheduled clean-up settings, confirme a caixa marcada, escolha a frequência e salve. Esse salvamento força o plugin a reescrever um evento limpo no agendador interno.
    wp-admin -> WP-Optimize -> Settings -> Enable scheduled clean-up and optimization
    wp option get wpo_weekly_cron_event
  3. Verifique o fuso horário do WordPress: ajuste o fuso em Configurações, Geral, para a sua cidade, não para um valor UTC fixo, para o WP-Optimize calcular o próximo horário a partir do relógio local. Confirme a hora atual do servidor pela linha de comando.
    wp option get timezone_string
    wp eval 'echo current_time("mysql");'
  4. Desative o WP-Cron disparado por visita: edite o wp-config.php, antes da linha que pede para parar de editar, e desligue o disparo por carga de página, que é o que faz a limpeza só rodar quando chega tráfego. Sozinha, esta linha para o agendador, então o passo seguinte é obrigatório.
    define( 'DISABLE_WP_CRON', true );
  5. Crie um cron real do servidor: no painel da hospedagem, em Cron Jobs, ou via crontab, agende uma chamada ao wp-cron.php a cada 15 minutos. Assim o evento da limpeza é checado em intervalo fixo, independente de visitas, e a otimização agendada passa a rodar no horário.
    */15 * * * * cd /home/usuário/public_html && php wp-cron.php >/dev/null 2>&1
  6. Force uma execução e confira o resultado: rode o evento manualmente uma vez para validar que a limpeza executa de fato, depois liste de novo o agendamento para confirmar que o próximo horário caiu dentro da frequência configurada.
    wp cron event run wpo_cron_event2
    wp cron event list | grep wpo_cron_event2
PHP
// wp-cli: diagnostica o agendamento real da limpeza do WP-Optimize
// Rode com: wp eval-file diagnostico-limpeza.php
$proximo = wp_next_scheduled( 'wpo_cron_event2' );

if ( ! $proximo ) {
    WP_CLI::warning( 'Nenhum evento wpo_cron_event2 agendado. Marque a limpeza em Settings e salve.' );
} else {
    $hora = wp_date( 'd/m/Y H:i', $proximo ); // usa o fuso do WordPress
    WP_CLI::log( "Proxima limpeza agendada: {$hora}" );
    if ( ( $proximo - time() ) < 0 ) {
        WP_CLI::warning( 'Horario no passado: o WP-Cron nao esta disparando a limpeza.' );
    }
    if ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON ) {
        WP_CLI::log( 'DISABLE_WP_CRON ativo: confirme um cron real do servidor chamando o wp-cron.php.' );
    }
}

Perguntas frequentes

Por que a limpeza agendada do WP-Optimize não roda mesmo com a opção marcada?
Porque marcar a caixa apenas registra o evento wpo_cron_event2 no WP-Cron, que só é verificado quando alguém carrega uma página. Em site de baixo tráfego, a limpeza marcada para a madrugada fica esperando a próxima visita e nunca dispara no horário escolhido, então o banco segue inchado.
O WP-Optimize precisa de cron real do servidor para a limpeza automática funcionar?
Em sites de baixo tráfego, sim. Defina DISABLE_WP_CRON como true e crie um cron do servidor chamando o wp-cron.php a cada 15 minutos. Assim o evento da limpeza é checado em intervalo fixo, independente de visitas, e a otimização agendada passa a executar no horário configurado.
Como sei se o evento de limpeza do WP-Optimize está mesmo agendado?
Rode wp cron event list pelo WP-CLI e procure por wpo_cron_event2. Se ele não aparecer, o agendamento não foi gravado e basta voltar em Settings, marcar a opção e clicar em Save settings. Se aparecer com horário no passado, o WP-Cron parou de disparar e o problema é o agendador.
A opção está marcada, salvei e mesmo assim não roda. O que falta?
Provavelmente o disparo do WP-Cron. Confirme com wp cron event list que o wpo_cron_event2 existe, depois cheque se a constante DISABLE_WP_CRON está como true sem um cron real do servidor por trás. Sem o cron do servidor, o evento fica agendado mas nunca é executado.
O fuso horário errado afeta o horário da limpeza agendada?
Sim. Se o fuso em Configurações, Geral, está em UTC ou numa cidade errada, o WP-Optimize soma o intervalo a um relógio diferente do local e a próxima limpeza cai deslocada em uma quantidade fixa de horas. Ajustar o fuso para a sua cidade realinha o horário da otimização.
Um plugin de cache pode impedir a limpeza agendada de rodar?
Pode. Quando o cache serve a home direto da página estática, o WordPress não executa o disparo do WP-Cron naquela visita, e a limpeza agendada é empurrada para uma carga de página que escape do cache. Por isso o cron real do servidor é mais confiável que o disparo por visita.
Onde vejo se a limpeza automática está realmente executando?
Mantenha a opção de log ativa e abra o arquivo wpo-cron.log em wp-content/uploads/wp-optimize. Cada ciclo bem-sucedido grava uma linha ali. Se não há registros novos, o evento agendado não está sendo disparado, o que confirma que o problema é o WP-Cron e não o WP-Optimize.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes