Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Palestra WordCamp São Paulo 2017

124 views

Published on

Slides da minha palestra no WordCamp São Paulo 2017 no dia 02/12 na Faculdade Impacta.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Palestra WordCamp São Paulo 2017

  1. 1. Vinícius Lourenço WordCamp São Paulo 2017 02/12/2017 Automatizando tarefas no WordPress utilizando suas funções nativas de cron jobs.
  2. 2. Vinícius Lourenço Desenvolvedor web desde 2009, trabalhando com WordPress desde 2013 e exclusivamente com a plataforma desde 2015, prestando serviços a empresas nacionais e internacionais pela WebVL Desenvolvimento. Coordenador do WordPress Meetup São Carlos. Em seu tempo livre, no mundo offline, cultiva planta carnívoras.
  3. 3. O que é WP-Cron?
  4. 4. WP-Cron Em poucas palavras: Sistema nativo do WordPress para agendamento de tarefas. Um ‘hook’ customizado é agendado para executar o(s) métodos a ele atribuído. Por padrão as tarefas são sempre verificadas/executadas por requisição http via wp-cron.php sempre que o site é acessado.
  5. 5. Quando usar? Em casos de automatização de tarefas internas: - Publicação de um post; - Envio de e-mails; - Exclusão de transients expirados; - Relatórios de compras ocorridas durante o dia;
  6. 6. Quando usar? Em casos de automatização de tarefas internas: - Checagem de status de pedidos em massa; - Extração de qualquer tipo de informação e automatização;
  7. 7. Métodos principais:
  8. 8. Métodos principais: wp_next_scheduled(); wp_schedule_single_event(); wp_schedule_event();
  9. 9. Métodos principais: wp_next_scheduled( string $hook, array $args = array() );
  10. 10. Métodos principais: wp_schedule_event( int $timestamp, string $recurrence, string $hook, array $args = array() ); Utilizar time(), o retorno sempre será a timestamp GMT, utilizada no WP. $recurrence = hourly, daily, twicedaily. Verificar filtro ‘cron_schedules’, no método wp_get_schedules() para recorrências personalizadas
  11. 11. Métodos principais: wp_schedule_single_event( int $timestamp, string $hook, array $args = array() ); Utilizar time(), o retorno sempre será a timestamp em formato GMT, utilizada no WP.
  12. 12. Fluxo básico (Agendamento recorrente)
  13. 13. Tarefa sendo agendada a cada hora após a ativação do plugin.
  14. 14. Fluxo básico (Agendamento pontual)
  15. 15. Outras funções wp_reschedule_event(); wp_unschedule_event(); wp_clear_scheduled_hook(); wp_get_schedules(); wp_get_schedule(); Verificar arquivo: /wp-cron.php /wp-includes/cron.php
  16. 16. Verificando tarefas agendadas
  17. 17. Atenção! Casos não recomendáveis no formato padrão.
  18. 18. Método padrão não recomendável quando: - Site tem poucos acessos; - Se houver algum problema na requisição http pode resultar em tarefas não sendo executadas completamente; - Pode sobrecarregar o servidor caso o site tenha muitos acessos simultâneos (em casos em que uma tarefa é realizada a cada acesso).
  19. 19. Como resolver?
  20. 20. Resolvendo: - Adicionar define('DISABLE_WP_CRON', 'true'); no arquivo wp-config.php - Realizar a requisição via crontab no servidor. Sendo realizados a cada 5 minutos: # echo "*/5 * * * * www-data wget -o /dev/null -O /dev/null http://seudominio.com/wp-cron.php" > /etc/cron.d/wordpress
  21. 21. Cuidados
  22. 22. - Utilizando 'DISABLE_WP_CRON' você reduz o impacto do carregamento do site pois evita chamada ao wp-cron.php; - Com o modo acima e chamando wp-cron via crontab você também garante que a tarefa será executada; - NÃO utilizar este método para requisição a jobs externos ao WP.
  23. 23. Vinícius Lourenço WordCamp São Paulo 2017 02/12/2017 Muito obrigado! https://blog.vilourenco.com.br Twitter: @vilourenco | Facebook: fb.com/vilourenco Email: vinicius.q.lourenco@gmail.com Dúvidas?

×