O cancelamento por dias é uma rede de segurança. Em vez de agendar cada pedido individualmente, o plugin roda uma vez por dia, pega todos os pedidos com mais de N dias que ainda não foram pagos e cancela em massa.
Use esse modo quando:
- Você não quer configurar prazo gateway por gateway.
- Quer um "tempo máximo absoluto" que age sobre qualquer pedido pendente, independente do método.
- Quer limpar pedidos antigos que escaparam do cancelamento por método de pagamento.
Os dois modos podem (e devem) ser usados juntos.
Configuração
Em WooCommerce → Configurações → Pagamento, na seção Cancelamento de pedidos, há dois campos relevantes pra esse modo:
Dias até cancelar qualquer pedido
Número de dias desde a criação do pedido. Pedidos mais antigos que isso, e que ainda batem nos status selecionados, serão cancelados.
Deixe em branco pra desativar o modo por dias.
Status para cancelar
Multi-select dos status do WooCommerce que tornam o pedido elegível pro cancelamento. Por padrão, nenhum está selecionado — você precisa escolher.
Sugestão prática:
- Pendente (
pending) - Em espera (
on-hold)
Se você incluir status que indicam pagamento confirmado (como Processando ou Concluído), o plugin pode cancelar pedidos pagos depois de N dias. Em geral só faz sentido marcar status que indicam "ainda não pago".
Como o plugin executa
O cancelamento por dias roda via WP-Cron, no hook wc_stock_manager_cancel_orders, agendado diariamente.
A cada execução:
- O plugin busca pedidos com
data_de_criaçãomais antiga que N dias e cujostatusestá na lista configurada. - Processa em lotes de até 35 pedidos por vez, com intervalos de 3 a 5 minutos entre lotes (pra não sobrecarregar o servidor).
- Cada pedido é mudado pra Cancelado com uma nota explicando o motivo.
- A restauração de estoque dispara automaticamente em seguida.
WP-Cron precisa estar funcionando
O modo por dias depende do WP-Cron. Em sites de baixo tráfego, o WP-Cron pode atrasar. Em sites onde o WP-Cron foi desabilitado (DISABLE_WP_CRON), você precisa configurar um cron de servidor.
Pra checar se o cron está agendado, rode num shell PHP ou via WP-CLI:
wp cron event list --fields=hook,next_run_relative | grep wc_stock_manager_cancel_orders
Se aparecer vazio, o cron não foi agendado. O plugin reagenda automaticamente em qualquer visita ao admin, mas se você suspeita que algo desinstalou o evento, salve as configurações novamente em WooCommerce → Configurações → Pagamento.
Diferença pro modo por gateway
| Por gateway | Por dias | |
|---|---|---|
| Granularidade | Minutos, por método | Dias, todos os pedidos |
| Quem agenda | Action Scheduler | WP-Cron diário |
| Quando dispara | Por pedido, no horário exato | Em lote, uma vez por dia |
| Ideal pra | Pix, cartão, boleto | Limpeza geral, rede de segurança |
Os dois modos coexistem sem conflito: o pedido é cancelado pelo primeiro que chegar.