O cron é um utilitário Unix/Linux, habitualmente utilizado para agendar comandos ou um script em um servidor web, o qual é executado em segundo plano. Um cron job é a tarefa em si, usada para agendar tarefas em horários, datas ou intervalos periódicos. Normalmente, isso envolve tarefas repetitivas que são automatizadas para poupar tempo. No WordPress, isso é feito pelo WP-Cron, utilizado para simular um cron de sistema.

Alguns exemplos de um cron job do WordPress são o agendamento de uma publicação ou de um plugin de backup que funciona com base num agendamento predefinido. Iremos hoje detalhar a forma como pode criar, alterar e executar facilmente um cron job do WordPress.

Como Configurar um Cron Job do WordPress

É importante referir que o WP-Cron é ligeiramente diferente de um cron de sistema e cada um tem suas próprias vantagens e desvantagens. Por exemplo, o WP-Cron depende inteiramente de intervalos, já um cron de sistema depende de horários específicos. Um WP-Cron apenas funciona quando a página é carregada (back-end ou front-end), o que pode ser menos fiável. Os intervalos padrões do WordPress são definidos por hora, duas vezes por dia e diariamente.

Para agendar eventos WP-Cron, precisa criar hooks personalizados. Recomendamos verificar o manual oficial de plugins WordPress, que tem um guia fantástico sobre o agendamento de eventos WP Cron. Se está procurando por uma forma alternativa de configurar um cron de sistema com o WordPress, recomendamos ler o artigo onde Tom Mcfarlin fala sobre a configuração de uma tarefa cron do WordPress. E, para aqueles que talvez ainda não estejam num nível tão avançado, iremos explorar a forma como pode usar facilmente o WP-Cron, juntamento com o conhecido plugin WP Crontrol. Isso permite visualizar e controlar o que está acontecendo no sistema WP-Cron.

Plugin WP Control WordPress

Plugin WP Control WordPress

O WP Crontrol tem mais de 80,000 instalações e uma fantástica classificação de 4.9 estrelas. Muita gente na comunidade WordPress adora esse plugin.

O plugin é super útil. Ele exibe os CRON Jobs que devem ser executados, o que é um ótimo primeiro passo para entender o que está acontecendo e se as coisas estão ou não funcionando. Só isso já vale 5 estrelas. Também pode criar novas tarefas agendadas e acionar as existentes, o que vale mais 5 estrelas. — Josh, criador do Caldera Forms

Pode baixar o plugin no repositório do WordPress ou procurar por ele no seu painel WordPress em “Adicionar Novo”. Os recursos do WP Control incluem:

  • Capacidade de ver todos os eventos cron juntamente com os seus argumentos, recorrência e próximo momento de execução.
  • Editar, excluir e executar imediatamente qualquer evento cron.
  • Adicionar novos eventos cron.
  • Adicionar, editar e remover crons personalizados.

Cron de Servidor

Se é cliente Kinsta, temos também um cron job de servidor, que é executado em todos os sites a cada 15 minutos. Veja o nosso artigo sobre como gerenciar servidores na Kinsta.

Agendamentos WP-Cron

Após ativado, pode alterar os agendamentos dos cron job no WordPress em “Agendamentos Cron”, opção que está nas configurações do seu painel WordPress. Note que o plugin acrescenta semanalmente um agendamento padrão adicional. Também pode adicionar agendamentos adicionais em segundos, como 21600 segundos para cada 6 horas.

Agendamentos do WP-Cron

Agendamentos do WP-Cron

Esses intervalos podem também ser adicionados com código, usando um filtro como:

add_filter( 'cron_schedules', 'example_add_cron_interval' );

function example_add_cron_interval( $schedules ) {
 $schedules['five_seconds'] = array(
 'interval' => 5,
 'display' => esc_html__( 'Every Five Seconds' ),
 );

return $schedules;
 }

Eventos WP-Cron

Pode também usar o plugin para ver seus atuais cron job do WordPress, que já estão agendados. Em Ferramentas, clique em “Eventos Cron”. Muitos dos nomes das ações são facilmente reconhecíveis, já que devem corresponder em parte ao nome do plugin, como “woocoomerce_cleanup_sessions” ou “gravityforms_cron”.

Eventos WP-Cron

Eventos WP-Cron

Você pode executar imediatamente um evento Cron clicando em “Executar Agora” ao lado do nome da ação. Isso pode ser útil para solucionar problemas, já que poderá ser necessário executar um evento Cron várias vezes.

Evento cron executado com sucesso

Evento cron executado com sucesso

Alterar Evento Cron

Pode também editar os eventos Cron existentes clicando em “Editar” do lado do nome da ação. Depois disso, pode alterar o nome da ação, os argumentos, a execução seguinte e a recorrência. Mas, cuidado, o funcionamento de muitos plugins depende dos seus Cron Job.

Alterar evento Cron

Alterar evento Cron

Adicionar Evento Cron

Também pode adicionar eventos Cron. No nosso exemplo, vamos adicionar o cron job do WordPress ao plugin Disqus. Muita gente pode necessitar de fazer isso para alterar a frequência de sincronização ou se houver problemas de sincronização de comentários. Cada documentação do desenvolvedor de plugins de terceiros deve ter o nome do seu evento cron, ou melhor, o nome da ação. Nesse caso, ele é “dsq_sync_forum”, o qual está sendo usado pelo plugin.

Se você estiver criando um job do zero, precisará de um hook de ação correspondente em algum lugar do seu código, como o arquivo functions.php. Esse é o exemplo do WP-Crontrol:

add_action( 'my_hookname', 'my_function' );

O próximo passo é escrever sua função.

function my_function() {
    wp_mail( 'hello@example.com', 'WP Crontrol', 'WP Crontrol rocks!' );
}

Para o Disqus, primeiro adicionamos um novo agendamento cron de 600 segundos (10 minutos). Depois clicamos em “Adicionar Evento Cron” e inserimos “dsq_sync_forum” como nome da nossa ação, escolhemos o próximo momento de execução e a recorrência de 10 minutos que acabámos de criar. Após isso, clicamos em “Adicionar Evento Cron”. Agora ele será automaticamente executado a cada 10 minutos para que possamos sincronizar manualmente os comentários do Disqus com a base de dados WordPress.

Adicionar trabalho cron do WordPress

Adicionar cron job do WordPress

E pronto! É muito fácil de usar.

WP-Cron WP-CLI

Também pode gerenciar eventos WP-Cron e/ou um cron job do WordPress no WP-CLI. Por exemplo, esse comando mostrará uma lista dos atuais eventos cron.

wp cron event list

wp-cron event list

Consulte a documentação cron WP-CLI oficial para mais comandos e parâmetros.

16
Shares