Você pode estar se perguntando – “mas eu já posso fazer isso nas configurações do WooCommerce!“. Sim esta correto; vá para WooCommerce Settings > Products > Inventory e defina o valor “Hold Stock Minutes”. Após esse período, os pedidos não pagos serão marcados como cancelados para garantir que o estoque volte ao valor inicial.
O problema é – e se você não quiser usar a coisa “Reter minutos de estoque” , e melhor ainda, e se você não usar o gerenciamento de estoque? Nesse caso, os pedidos não serão marcados como cancelados automaticamente.
Além disso, e se você precisar fazer um trabalho condicional, por exemplo? quer apenas cancelar as encomendas “fracassadas”, enquanto quer manter as “pendentes” como estão? Mesmo neste caso, a opção “manter estoque” não funcionará, pois você precisa especificar qual status do pedido deseja segmentar e, em seguida, executar a função de cancelamento.
De qualquer forma, aproveite!
Vamos agendar um evento que cancela automaticamente os pedidos não pagos do WooCommerce de um determinado status de pedido, por exemplo. Pedidos falhados.Snippet PHP: cancelar pedidos programaticamente após 1 hora
Observe que usei o gancho “woocommerce_order_status_{status}”, o que significa que você pode segmentar qualquer status de pedido você deseja (no meu caso, “woocommerce_order_status_pending” para cancelar automaticamente ordens de pagamento pendente após 1 hora).
Se você precisar editar o período de tempo, basta alterar “3600 ” (uma hora em segundos) para o que você quiser.
/** * @snippet Cancela pedidos pendentes automaticamente após 1h * @how-to Get CustomizeWoo.com GRÁTIS * @author Rodolfo Melogli * @compatible WooCommerce 7 * @ doe $ 9 https://businessbloomer.com/bloomer-armada/ */ add_action( ‘woocommerce_order_status_pending’, ‘bbloomer_cancel_failed_pending_order_event’ ); function bbloomer_cancel_failed_pending_order_event( $order_id ) { if ( ! wp_next_scheduled( ‘bbloomer_cancel_failed_pending_order_after_one_hour’, array( $order_id ) ) ) { wp_schedule_single_event( time() + 3600, ‘bbloomer_cancel_failed_pending_order_after_one) } } add_action( ‘bbloomer_cancel_failed_pending_order_after_one_hour’, ‘bbloomer_cancel_order’ ); function bbloomer_cancel_order($order_id) {$order = wc_get_order($order_id); wp_clear_scheduled_hook( ‘bbloomer_cancel_failed_pending_order_after_one_hour’, array( $order_id ) ); if ( $order->has_status( array( ‘pending’ ) ) ) { $order->update_status( ‘cancelado’, ‘Pedido pendente cancelado após 1 hora’ ); } }
Onde adicionar este snippet?
Você pode colocar snippets do PHP na parte inferior do arquivo functions.php do seu tema filho (exclua “?>” se você o tiver lá). O CSS, por outro lado, vai para o arquivo style.css do seu tema filho. Certifique-se de saber o que está fazendo ao editar esses arquivos – se precisar de mais orientação, dê uma olhada no meu tutorial em vídeo gratuito” Onde colocar a personalização do WooCommerce?”
Este snippet (ainda) funciona?
Por favor, deixe-me saber nos comentários se tudo funcionou como esperado. Ficarei feliz em revisar o snippet se você relatar o contrário (forneça capturas de tela). Eu testei este código com o tema Storefront, a versão WooCommerce listada acima e uma hospedagem compatível com WordPress no PHP 7.3.
Se você acha que este código economizou tempo e dinheiro, sinta-se à vontade para participar de mais de 14.000 WooCommerce Weekly assinantes para atualizações de postagens de blog ou mais de 250 apoiadores do Business Bloomer para 365 dias de benefícios WooCommerce. Agradecemos antecipadamente 🙂
Precisa de ajuda com o WooCommerce?
Confira estes tutoriais em vídeo gratuitos. Você pode aprender como personalizar o WooCommerce sem plug-ins desnecessários, como definir corretamente as configurações do plug-in WooCommerce e até mesmo como dominar a solução de problemas do WooCommerce em caso de bug!
Rodolfo Melogli
Fundador da Business Bloomer
Autor, especialista em WooCommerce e Palestrante do WordCamp, Rodolfo trabalha como freelancer independente de WooCommerce desde 2011. Seu objetivo é para ajudar empreendedores e desenvolvedores a superar seus pesadelos com WooCommerce. Rodolfo adora viajar, correr atrás de bolas de tênis e futebol e, claro, pizza de forno a lenha.