<html lang="pt-br" dir="ltr"><head></head><body># Adicionando código personalizado após a conclusão de um pedido

No Easy Digital Downloads 3.2.0, as `after order actions` (ações pós-pedido) foram introduzidas para substituir as `after payment actions` (ações pós-pagamento) depreciadas. Este hook fornece aos desenvolvedores uma maneira de processar ações intensivas quando um pagamento é concluído, sem afetar a velocidade e o desempenho do usuário final ao finalizar a compra. Este é um guia sobre como adicionar uma ação pós-pedido.

Introdução às Ações Pós-Pedido
-----------------------------------

Se você deseja executar ações adicionais quando um pedido é marcado como 'concluído', você é encorajado a usar o hook `edd_after_order_actions` em vez do hook `edd_complete_purchase`. Qual é a diferença entre esses dois hooks?

- `edd_complete_purchase` - Executa durante o processo de compra após o usuário clicar no botão 'Finalizar Compra' e antes da página 'Confirmação de Compra' ser carregada. Este hook deve ser usado para tarefas "missão crítica", pois impactará o tempo percebido pelo usuário para concluir sua compra. Exemplos de uso deste hook devem ser tarefas como a criação de chaves de licença, a geração de assinaturas ou qualquer coisa que o usuário precise ter visível na página de recibo.
- `edd_after_order_actions` - Executa aproximadamente 30 segundos após a conclusão da compra, através do sistema `WP_Cron`. Este hook deve ser usado para executar chamadas de API adicionais, consultas de banco de dados caras e tarefas que devem ser consideradas não críticas para o usuário concluir sua compra. Bons exemplos disso são adicionar usuários a listas de e-mail, calcular estatísticas para um usuário, atualizar caches, etc.

Quais argumentos são passados para o hook?
----------------------------------------

O hook `edd_after_order_actions` envia três argumentos:

- O ID do pedido como um inteiro
- O objeto `EDD\Orders\Order`
- O objeto `EDD_Customer`

Quais status de pedido estão incluídos em 'concluído'?
-----------------------------------------------

Easy Digital Downloads usa o status `complete` para marcar um pedido como concluído. Se você estiver integrando ou usando a extensão Recurring Payments, o status `edd_subscription` também é considerado um pedido 'concluído'. Se você deseja executar sua ação apenas para a compra inicial (e ignorar as renovações de assinatura), você precisará verificar o `$order-&gt;status` com o valor `complete` antes de continuar com sua integração.

Por que isso requer WP\_Cron?
-------------------------------

WP\_Cron é um processo em segundo plano que seu site WordPress usa para concluir tarefas sem impactar a experiência do usuário ao visualizar seu site. Quando o tráfego é gerado em seu site, antes que a página termine de carregar, o WordPress determina se há alguma tarefa em segundo plano que precise ser concluída. Se houver, ele iniciará um processo em segundo plano para lidar com essas tarefas pendentes.

### E se meu host desativar o WP\_Cron?

Embora façamos o nosso melhor para detectar se o `WP_Cron` está funcionando, pode haver um caso em que não possamos detectá-lo corretamente. Se o seu host ou servidor tiver o `WP_Cron` desativado ou modificado para ser executado em uma frequência pré-determinada, você pode precisar desativar este recurso manualmente. Existe um filtro se você optar por não usar os hooks de ação posterior, caso em que o EDD voltará a executar as ações no momento da conclusão e evitará o processo atrasado.

**AVISO:** Como este sistema de 'ações pós-pedido' depende do WP\_Cron, ele não deve ser usado para coisas consideradas 'missão crítica'. É simplesmente uma maneira de descarregar integrações caras com APIs e grandes conjuntos de dados que não afetam diretamente os dados da compra.

### Pontos chave sobre ações pós-pedido

- Dispara via `WP_Cron`
- Pode ser desativado via filtro (`edd_use_after_payment_actions`)
- Por padrão, é agendado para 30 segundos após a compra, mas pode ser alterado via filtro.
- A tabela do banco de dados do pedido contém uma coluna para o horário em que as ações foram concluídas.

Existe um exemplo?
--------------------

Criamos um 'modelo' para integração com o hook `edd_after_order_actions` em nossa biblioteca WP Code. Ele pode ser visualizado aqui:

Migrando seu código de `edd_after_payment_actions`
----------------------------------------------------

Se você já integrou com o hook `edd_after_payment_actions`, a boa notícia é que migrar para este novo hook mais eficiente é bem fácil.

A principal diferença é a mudança no segundo parâmetro. Em vez de enviar o pagamento como um objeto `EDD_Payment`, ele enviará um objeto `Order`.</body></html>