Como Configurar e Gerenciar um Cron Job do WordPress

Um Cron Job é uma utilidade UNIX que possibilita ao usuário rodar tarefas programadas em um servidor web. O WordPress possui seu próprio sistema de cron jobs, chamado WP-Cron. Essa ferramenta simula o sistema cron UNIX para automatizar verificações e atualizações, publicações de posts, e outras tarefas repetitivas ou recorrentes em um site.

Se você é um usuário do WordPress, saber como agendar eventos com o WP cron pode facilitar a execução de suas tarefas administrativas.

Este artigo vai te explicar como configurar e gerenciar o sistema de cron jobs do WordPress, com um plugin e através do WP-CLI. Você também vai descobrir quais as vantagens e as desvantagens de utilizar este sistema cron do WordPress e como ele se diferencia de um tradicional sistema UNIX de cron jobs. 

O que é um Cron Job do WordPress?

Cron jobs do WordPress são um sistema que simula a ferramenta cron UNIX para automatizar o agendamento de tarefas com intervalos de tempo determinados. O sistema cron do WordPress permite que seus usuários realizem tarefas referentes ao site de forma programada e em um momento específico, como publicar posts agendados e verificar atualizações necessárias.

Quais são os Prós e os Contras de Utilizar Cron Jobs do WordPress?

O sistema WP-Cron é fácil de ser configurado, pois diferentemente do cron job UNIX, ele não exige conhecimentos técnicos de comandos UNIX. Vários plugins do WordPress contam com recursos que simplificam os processos de configuração e gerenciamento de cron jobs, tornando o sistema acessível até mesmo para quem está começando nessa área.

Ao permitir que você programe tarefas repetitivas para que sejam realizadas em um intervalo de tempo personalizado, você consegue poupar tempo e energia para gastar em outras funções essenciais da administração do site. Adicionalmente, este sistema garante que você não perderá nenhum dado ou informação caso a tarefa agendada não seja executada no momento certo — sendo esta uma característica que não está presente no sistema cron UNIX. 

Infelizmente, o WP_Cron roda apenas quando um usuário visita seu site. Sendo assim, sites WordPress com pouco tráfego podem acabar pulando algumas tarefas cron caso nenhum visitante acione o carregamento das páginas.

Isso pode causar um acúmulo de cache pendente, o que pode prejudicar o tempo de carregamento e o desempenho do site. 

Atrair tráfego para seu site pode não resolver o problema. Na verdade, sites com alto tráfego e que utilizam cron jobs estão suscetíveis a condições de corrida e processos de longa duração.

Condições de corrida, ou race conditions, acontecem quando múltiplos visitantes acessam o site ao mesmo tempo, acionando o WP-Cron para que execute a mesma tarefa várias vezes e simultaneamente. Isso acaba gerando uma fila de tarefas pendentes, resultando em um desempenho mais lento.

Como Gerenciar Cron Jobs do WordPress com um Plugin

O jeito mais fácil de configurar e gerenciar cron jobs do WordPress envolve a utilização de um plugin de cron job. Neste tutorial vamos utilizar o  WP Crontrol, já que ele é gratuito, possui versão traduzida para o português e conta com todos os recursos necessários para o agendamento e execução das tarefas programadas.

De todo modo, fique à vontade para utilizar outro plugin caso ele atenda melhor às suas necessidades.

1. Instale o Plugin WP Crontrol 

Primeiramente, instale e ative o plugin do WordPress para administrar cron jobs. Você pode seguir estes passos:

  1. A partir do seu painel de controle do WordPress, navegue até o menu Plugins e clique em Adicionar Novo.
  2. Utilize o recurso do filtro ou a opção de busca para encontrar o plugin WP Control e então clique em Instalar Agora
  3. Quando a instalação estiver concluída, clique no botão Ativar

Para ver todos os cron jobs que estão rodando em seu site WordPress, acesse a seção Ferramentas → Eventos Cron a partir do seu painel de administração WP. 

Seção de Cron Events no menu de Ferramentas do WordPress

Importante! Não delete nenhum cron job que já vier configurado por padrão no WordPress (eles possuem o prefixo wp). Caso exclua algum desses cron jobs, as principais funcionalidades do seu site, ligadas ao núcleo da instalação WordPress, serão desconfiguradas.

2. Adicione um Novo Cron Job

Agora que já é possível controlar cron jobs do WordPress através do plugin recém-instalado em seu site, você pode começar a gerenciar estas funcionalidades. Abaixo está o passo-a-passo de como criar um novo evento cron:

  1. Acesse o submenu Eventos Cron e clique no botão Adicionar Novo, localizado no topo da página.
Opção de adicionar novo Cron Event no WordPress
  1. Selecione a opção Evento Cron Padrão e crie um hook para o novo cron job. Não se esqueça que o nome do hook deve seguir o padrão convencional de nomenclatura PHP. Agende o tempo de execução da tarefa e a recorrência da mesma. Você pode deixar o campo de Argumentos em branco.
Adicionando novo Cron Event no WordPress
  1. Clique em Adicionar Evento. O novo cron job será exibido na lista de Eventos Cron, caso o processo de criação tenha sido configurado com sucesso.
Exibição da lista de cron jobs ativos no WordPress
  1. Agora que você possui um hook, o próximo passo é adicioná-lo à ação que será executada quando o evento cron for acionado. Acesse seu painel de hospedagem, o hPanel, e abra seu Gerenciador de Arquivos, localizado na seção Arquivos.
O botão Gerenciador de Arquivos no painel hPanel
  1. Dentro do seu diretório raiz, localize a pasta do seu tema e dentro dela, identifique o arquivo functions.php. Clique duas vezes para abrir o arquivo. Então adicione o seguinte fragmento de código:
add_action( 'hostinger_custom_cron', 'hostinger_custom_cron_func' );
function hostinger_custom_cron_func() {
 wp_mail( 'seuemail@exemplo.com.br', 'Automatic email', 'Automatic scheduled email from WordPress to test cron');
}

Este exemplo utiliza a função wp_mail(), que aciona o WordPress para que o sistema envie um e-mail quando o evento cron rodar no site. Não se esqueça de substituir seuemail@exemplo.com.br por um endereço de e-mail real. 

  1. Salve as alterações feitas e acesse a página principal de seu site novamente. Se você receber o e-mail teste, então o cron job está operando corretamente.
E-mail automático recebido pelo cron job bem configurado

3. Configure o Agendamento do Cron Job

O plugin oferece quatro opções-padrão de intervalo de tempo para você escolher a recorrência de seu evento cron, mas é possível configurar intervalos de tempo personalizados caso o usuário deseje. Siga os passos indicado abaixo para adicionar um novo agendamento de cron job: 

  1. A partir do seu painel de administração do WordPress, navegue até o menu de Configurações → Agenda do Cron.
  2. Preencha os campos exigidos na seção Adicionar Agendamento do Cron. No exemplo deste artigo vamos configurar o intervalo de 600 segundos (10 minutos). Utilize a convenção de nomenclatura PHP para determinar o nome do intervalo criado.
Configuração de agendamento cron job no WordPress
  1. Clique em Adicionar Agendamento do Cron. O novo intervalo de tempo deverá ser exibido na lista disponível na página.
Agendamento cron job no WordPress configurado com sucesso

4. Editando um Cron Job Existente

Agora que já criamos um intervalo de tempo determinado para recorrência, vamos utilizá-lo com o cron job personalizado. Abaixo estão descritos os passos para modificar um cron job que já existe:

  1. Retorne ao menu Eventos Cron dentro da seção Ferramentas do painel WordPress. Localize o cron job que foi criado anteriormente e clique em Editar logo abaixo dele.
  2. Abra o menu suspenso de Recorrência e selecione a opção 10 minutos
Editando agendamento cron job já existente no WordPress
  1. Por fim, clique no botão Atualizar Evento.

Como Configurar um Cron Job WordPress com o  WP-CLI

Outra maneira de configurar um cron job WordPress envolve a utilização do WP-CLI. Esta ferramenta te permite gerenciar o site através de uma interface de linhas de comando. 

Os servidores de hospedagem da Hostinger (com exceção do plano de Hospedagem Compartilhada Single) já vêm com a função WP-CLI pré-instalada. Sendo assim, você só precisará conectá-la à sua conta de hospedagem utilizando o Putty SSH

Uma vez já conectado à sua conta de hospedagem via SSH, para acessar os cron jobs existentes, digite este comando no terminal:

wp cron event list

A linha de comando indicado abaixo irá exibir ainda outros comandos que você pode utilizar com o WP-CLI:

wp help

Como Criar um Cron Job Real

O WordPress cria e armazena scripts WP-Cron dentro do arquivo wp-cron.php. Por mais que este arquivo permita que seu site tenha cron jobs configurados (e rodando normalmente independente do sistema operacional), ele não é imune a ataques e pode entrar em conflito com plugins de cache.

O uso de cron jobs reais pode eliminar a execução constante do script deste arquivo. 

Antes de configurar um cron job real, você precisará desabilitar a tarefa cron padrão do WordPress. Isso pode ser feito de forma simples, através da adição de uma linha de código no seu arquivo wp-config.php. Acima da linha “/* That’s all, stop editing! Happy blogging. */” insira este código:

define( 'DISABLE_WP_CRON', true );

O próximo passo é configurar um cron job real para executar tarefas centrais do WordPress, ligadas ao núcleo estrutural do site. Esse processo pode variar dependendo do seu provedor ou serviço de hospedagem. Se você é um usuário da Hostinger, siga os passos descritos abaixo:

  1. Acesse seu hPanel e navegue até o menu de Cron Jobs, localizado na seção Avançado do seu painel de hospedagem.
  2. Adicione este fragmento de código no campo Comandos a Rodar:
wget -q -O - https://domain.tld/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Não se esqueça de substituir domain.tld pela verdadeira URL do seu site.

A página de trabalhos Cron no hPanel
  1. O hPanel oferece as opções de intervalo de tempo mais comuns para que você escolha aquela que achar melhor. Recomendamos que comece com uma recorrência de duas vezes por hora
  2. Clique no botão Salvar para armazenar as configurações do novo cron job.

Conclusão

O sistema de cron jobs do WordPress facilita o agendamento de tarefas em intervalos de tempo específicos. Apesar do WP-Cron possuir algumas desvantagens, saber como utilizar esta funcionalidade permite que você execute as tarefas administrativas do site de forma mais eficiente. 

Esperamos que este artigo tenha te ajudado a entender melhor o que é o recurso de cron jobs do WordPress e como configurá-lo através de um plugin como o WP Control, ou do WP-CLI. Boa sorte na sua jornada!

Se você está buscando otimizar o desempenho do seu site ainda mais, recomendamos utilizar uma hospedagem WordPress de alta qualidade. Encontre a sua aqui mesmo na Hostinger.

Perguntas Frequentes (FAQ) sobre Cron Jobs do WordPress

Qual a Diferença entre WP-Cron e Cron Job?

O WP-Cron é um sistema de cron jobs do WordPress que é baseado em web e simula o sistema cron UNIX padrão. Sendo assim, os eventos WP-Cron são acionados apenas a partir do carregamento da página (quando alguém acessa o site), enquanto um cron job real roda a qualquer momento (independente de possuir ou não visitantes no site).

Eu devo Usar um Cron Job Real ou um Cron Job do WP-Cron?

O WP-Cron funciona perfeitamente para aquilo que se propõe, que é rodar tarefas centrais do WordPress de forma automática. Entretanto, utilizar os cron jobs do WordPress para executar tarefas adicionais pode prejudicar a velocidade de carregamento das páginas do seu site. Sendo assim, recomendamos utilizar cron jobs reais nesses casos, para garantir um melhor desempenho.

Como Posso Parar um Cron Job do WordPress?

Se você possui cron jobs configurados e não utilizados, a melhor solução seria deletá-los. Alternativamente, você pode modificar o intervalo de tempo em que o evento acontece, alterando a recorrência da tarefa de acordo com o que necessita.

Rode o comando indicado abaixo para deletar cron jobs que utilizem um hook específico. Este método é ideal para remover cron jobs obsoletos.

$ wp cron event delete hook_name
Author
O autor

Bruna B. Barro

Bruna é formada em relações internacionais pela UFSC e atualmente faz mestrado em sociologia pela UFRJ. Determinada em tornar o conhecimento sobre tecnologia acessível a todas as pessoas, atua como tradutora e redatora freelancer na Hostinger. Tem experiência com tradução, localização, copywriting, gerenciamento de projetos, atendimento ao cliente e escrita acadêmica. No seu tempo livre gosta de assistir séries, cozinhar e jogar jogos de lógica.