Seu parceiro dedicado para todas as coisas WordPress

Como alterar o status do pedido WooCommerce programaticamente

Conteúdo

WooCommerce é uma plataforma de comércio eletrônico popular que alimenta milhões de lojas online em todo o mundo. Um dos principais recursos do WooCommerce é a capacidade de gerenciar pedidos. Por padrão, WooCommerce vem com vários status de pedido, como pendente, em processamento, concluído e cancelado. No entanto, pode haver momentos em que você precise criar status de pedido personalizados ou alterar o status do pedido de forma programática. Nesta postagem do blog, mostraremos como alterar o status do pedido WooCommerce de forma programática e daremos alguns exemplos de suas aplicações práticas.

Antes de começarmos, é essencial entender como funcionam os status dos pedidos no WooCommerce. Quando um cliente faz um pedido, ele recebe o status padrão de “pendente”. Você pode alterar manualmente esse status para “em processamento” quando começar a atender o pedido. Assim que o pedido for concluído, você pode alterar o status para “concluído”. Se um pedido for cancelado, o status será alterado para “cancelado”.

Agora, digamos que você precise criar um status de pedido personalizado chamado “em espera”. Você pode fazer isso adicionando o seguinte código ao seu arquivo functions.php:

“`php
função registrar_custom_order_status() {
Register_post_status('wc-em espera', array(
'label' => 'Em espera',
'público' => verdadeiro,
'exclude_from_search' => falso,
'show_in_admin_all_list' => verdadeiro,
'show_in_admin_status_list' => verdadeiro,
'label_count' => _n_noop( 'Em espera (%s) ', 'Em espera (%s) ' )
));
}
add_action('init', 'register_custom_order_status');
""

Você pode então usar o seguinte código para alterar o status do pedido para “em espera” programaticamente:

“`php
$pedido = wc_get_order($pedido_id);
$order->update_status( 'em espera', __( 'Pedido em espera', 'woocommerce' ) );
""

Este código recupera o objeto do pedido usando a variável $order_id e atualiza seu status para “em espera”.

Agora vamos ver uma aplicação prática deste código. Digamos que você tenha uma loja online que oferece um serviço de assinatura. Você deseja criar um status de pedido personalizado chamado “expirado”, que será atribuído aos pedidos quando o período de assinatura terminar. Você pode usar o seguinte código para conseguir isso:

“`php
função change_order_status_on_subscription_expiry($subscrição) {
$order_id = $subscrição->get_parent_id();
$pedido = wc_get_order($pedido_id);
$order->update_status( 'expirado', __( 'Assinatura expirada', 'woocommerce' ) );
}
add_action('woocommerce_subscription_end_of_prepaid_term', 'change_order_status_on_subscription_expiry');
""

Este código escuta o evento “woocommerce_subscription_end_of_prepaid_term”, que é acionado quando o período de assinatura termina. Em seguida, ele recupera o ID do pedido pai e atualiza seu status para “expirado”.

Conclusão

Alterar o status do pedido WooCommerce programaticamente pode ser um recurso útil para proprietários de lojas online que desejam personalizar seu sistema de gerenciamento de pedidos. Com a ajuda de ganchos e filtros do WordPress, você pode criar status de pedidos personalizados, automatizar alterações de status de pedidos e integrar-se a serviços de terceiros. Esperamos que este artigo tenha lhe dado alguns insights sobre como conseguir isso e inspirado você a explorar mais possibilidades com WooCommerce.

 

Como começar?

Saiba Mais

Manutenção WooCommerce

Poupe 33% com nosso plano de preços anual.

Iniciar

Está tendo problemas com o WordPress?

Reclame o seu Manutenção WordPress Gratuita

No cenário digital acelerado de hoje, cada site merece o cuidado e a experiência de uma equipe de manutenção profissional, garantindo desempenho ideal, segurança aprimorada e experiências de usuário perfeitas, para que você possa se concentrar no crescimento do seu negócio com tranquilidade.

Alexei Seryapin
Fundador da WPServices

Código de cupom aplicado!

Não tenha pressa e continue navegando em nossos serviços.

Alexei Seryapin
Fundador da WPServices