O WordPress tem um agendador próprio, o WP-Cron, que trata das publicações marcadas, das verificações de actualização, do esvaziamento do lixo e dos e-mails que os plugins mandam. O nome engana: não é um cron. É um ficheiro que só corre quando alguém visita o site.
Isso dá dois problemas opostos, e um deles é seu. O que fazer está explicado em geral em tarefas agendadas (cron); aqui está o passo a passo do lado do WordPress.
| O seu site |
O que acontece |
| Poucas visitas por dia |
As tarefas ficam à espera. A publicação marcada para as 9 da manhã sai às 3 da tarde, quando alguém entrar. Depois disparam todas de uma vez, em cima desse visitante, que fica a olhar para uma página parada. |
| Muitas visitas por dia |
O contrário: o agendador é consultado vezes de mais, e cada consulta arranca o WordPress inteiro. É trabalho repetido a competir com os visitantes reais. |
A troca, em dois passos que não se separam
|
Desligar sem criar a tarefa é pior do que não mexer. Se acrescentar a linha ao wp-config.php e se esquecer do resto, as publicações marcadas deixam de sair, os e-mails da loja deixam de ser enviados, e nada dá erro. Faça as duas coisas na mesma sessão, ou nenhuma.
|
| 1 |
Desligue o agendador interno. No wp-config.php, por cima da linha que diz para parar de editar, acrescente define( 'DISABLE_WP_CRON', true );.
|
|
| 2 |
Crie a tarefa no cPanel. Na secção Avançado, abra Tarefas Agendadas (Cron Jobs). Se não vê o ícone, escreva cron na caixa de procura do painel.
|
|
| 3 |
Escolha a frequência. De cinco em cinco minutos chega para praticamente tudo. Na lista de frequências comuns isso é */5 * * * *.
|
|
| 4 |
Escreva o comando, escolhendo uma das duas formas da tabela abaixo.
|
|
| 5 |
Pôs o seu endereço no campo de notificação, no topo da página, durante os primeiros dias. Quer receber o que a tarefa imprimir, para saber que corre.
|
|
As duas formas de escrever o comando
| Forma |
O comando e quando se usa |
| Pelo PHP, directamente |
/usr/local/bin/php -q /home/CONTA/public_html/wp-cron.php. Troque CONTA pelo nome da sua conta, e o caminho pelo da pasta do site. É a forma mais rápida e não passa pela web. O /usr/local/bin/php usa a versão de PHP escolhida para a sua conta. |
| Pela web, com o curl |
/usr/bin/curl -s "https://asuaempresa.co.mz/wp-cron.php?doing_wp_cron" >/dev/null 2>&1. É a forma que os plugins costumam documentar, e a única que funciona quando o site não está na conta onde cria a tarefa. |
|
Se a aplicação lhe der uma linha pronta, use a dela. Vale sempre mais do que a nossa: quem escreveu o plugin sabe o que ele precisa.
|
|
Se protegeu o site com senha, a forma do curl não serve. Com Privacidade de Directório ligada no wp-admin, ou com o site inteiro protegido, o pedido leva com uma recusa e a tarefa nunca corre. Use a forma do PHP, que não passa pelo servidor web.
|
Confirmar que ficou a funcionar
Esta parte não se salta. Uma tarefa silenciosa que nunca funcionou é igualzinha a uma que funciona.
| 1 |
Marque uma publicação para daqui a dez minutos e vá ver se saiu à hora, sem ter aberto o site.
|
|
| 2 |
Instale um plugin de gestão de tarefas do WordPress. Mostra a lista das tarefas agendadas, a hora a que cada uma corre e quais estão atrasadas. É a maneira mais clara de ver que o novo cron está a alimentar o WordPress.
|
|
| 3 |
Nos primeiros dias, leia o e-mail que a tarefa manda. Depois de confiar nela, cale-a acrescentando >/dev/null 2>&1 ao fim do comando.
|
|
Erros que se repetem
| O que fez |
Porque não funciona |
| Marcou de minuto a minuto |
São 1440 arranques por dia a competir com os visitantes, e se uma volta demorar mais de um minuto elas empilham-se umas sobre as outras. Porque isso pesa está em o admin-ajax a consumir tudo e em tarefas agendadas (cron). |
| Caminho relativo no comando |
O cron não começa na pasta do site. Os caminhos têm de ser completos, desde o /home/. |
| Versão de PHP diferente |
Se apontar directamente ao binário de uma versão e o site correr noutra, faltam extensões e a tarefa falha com erros estranhos. |
| Desligou e não criou nada |
O caso mais comum de todos. As tarefas simplesmente deixam de correr, sem uma linha de erro em lado nenhum. |
| Site em multisite |
Cada site da rede tem o seu agendador. Uma só chamada não chega: a forma do curl tem de ser repetida para o endereço de cada site. |
A hora do servidor pode não ser a sua, e isso muda tudo o que agendar: a que horas está o servidor.
|
Tem o comando escrito e a tarefa não corre? Mande-nos a linha e o domínio.
Abrir um pedido
|
PRODUTO RECOMENDADO Alojamento de sites com cPanel Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 600,00 MT/mês Ver planos |