Como alterar o status do pedido automaticamente no WooCommerce

Publicados: 2021-07-31

Deseja atualizar o status do pedido em sua loja? Você veio ao lugar certo. Neste guia, mostraremos como alterar automaticamente o status do pedido no WooCommerce usando alguns scripts PHP. Não se preocupe se você não tiver habilidades avançadas de codificação, explicaremos cada script em detalhes.

O WooCommerce oferece muitos recursos aos desenvolvedores, portanto, se você tiver habilidades de codificação, poderá fazer todos os tipos de personalizações e melhorar sua loja de comércio eletrônico. No tutorial a seguir, você aprenderá tudo o que precisa saber sobre o status do pedido. Este é um recurso do WooCommerce que pode ser muito útil ao gerenciar um grande número de pedidos. Será especialmente útil na lista de pedidos de back-end, onde os gerentes de loja podem facilmente pesquisar e realizar determinadas ações em pedidos com um status específico.

Sem mais delongas, vamos direto ao assunto.

Qual é o status do pedido no WooCommerce?

O status do pedido é simplesmente uma tag que um pedido possui que representa o estado atual do pedido . É semelhante a uma taxonomia anexada a uma postagem que descreve informações específicas sobre o estado atual dessa postagem. Por exemplo, quando um cliente clica no botão “Fazer pedido”, ele faz um pedido em nossa loja. Por padrão, o status do pedido é definido como "Pagamento pendente".

Se a loja estiver integrada a um gateway de pagamento como PayPal ou Stripe, o status padrão anterior (pendente) será validado e mudará para “ Em espera ” ou “ Falhou ” dependendo do resultado da validação do gateway de pagamento. Então, se o pagamento for concluído, o status do pedido mudará automaticamente para “ Processando ”, enquanto se o pagamento falhar, seu status será “ Reprovado ”.

Como você pode ver, cada um desses status nos fornece informações relevantes sobre o pedido. Essa automação nos permite saber se o pagamento do pedido foi concluído ou não para entregar nosso produto ao cliente.

Status do pedido no WooCommerce

Estes são todos os status de pedidos disponíveis no WooCommerce e o significado de cada um:

  • Pendente de pagamento: O pedido foi recebido e nenhum pagamento foi registrado. Estamos aguardando o pagamento
  • Falha: O pagamento falhou por algum motivo. Isso significa que foi rejeitado da plataforma de pagamento (ou seja, PayPal) ou que requer autenticação adicional (SCA)
  • Processamento: O pagamento foi recebido pela loja, o estoque do produto foi atualizado e a compra está dentro do prazo de entrega
  • Concluído: O pedido foi atendido e concluído. Este é o último estado de uma ordem onde tudo correu bem
  • Em espera : O cliente não efetuou nenhum pagamento, portanto o pedido requer confirmação do gerente da loja
  • Cancelado : O administrador da loja ou o usuário cancelou o pedido em algum momento. Isso não requer nenhuma ação adicional, embora seja recomendável entrar em contato com o cliente para entender por que ele cancelou o pedido
  • Reembolsado: o pedido foi reembolsado, nenhuma ação adicional é necessária

Agora que entendemos melhor o que é o status do pedido e sua função, vamos ver por que pode ser uma boa ideia atualizá-lo.

Por que alterar a função de status de pedido padrão?

Cada loja de comércio eletrônico é diferente e possui requisitos específicos. Algumas lojas online podem não usar o status do pedido ou podem não usar todos eles. Por exemplo, se os compradores não puderem devolver os produtos, a loja pode não usar o status Reembolso .

Além disso, pode haver alguns casos em que o recurso padrão de status do pedido não seja suficiente e a loja precise de um status personalizado ou de uma solução automatizada para o gerenciamento do status dos pedidos. Nesses casos, personalizar o comportamento do status do pedido é uma ótima solução para melhorar o gerenciamento da loja. Dessa forma, a loja de comércio eletrônico não precisará atualizar o status do pedido manualmente em todos os casos.

Isso ajudará os lojistas a economizar tempo e permitir que eles se concentrem em coisas mais importantes para melhorar seus negócios.

Como o status do pedido muda no WooCommerce

Neste ponto, é importante entender que o status do pedido muda dinamicamente quando o WooCommerce é integrado a um gateway de pagamento como PayPal, Payoneer, Stripe e assim por diante. Lembre-se de que, se você atualizar o status manualmente quando não for esperado, poderá interromper a forma de pagamento apresentada em sua loja e os clientes não poderão acompanhar o processo de compra.

Para entender melhor o que vamos fazer, vejamos como funciona o fluxo de status do pedido:

woocommerce-order-status

Da documentação do WooCommerce

Como você pode ver no gráfico acima, o primeiro estágio do status do pedido é “ Pendente ”. Logo em seguida, o gateway de pagamento valida se o usuário pode concluir o pagamento e altera seu status para “ Em espera ” e depois para “ Processando ” quando o pagamento for concluído com sucesso. Caso contrário, ele se transformará em “ Falha ”.

Depois disso, o WooCommerce não fará mais nada. O gerente da loja deve marcar o pedido como “ Concluído ”, ou “ Cancelado ”. Neste ponto, é seguro alterar o status do pedido automaticamente (programaticamente), mesmo se houver um gateway de pagamento integrado.

Além disso, é importante saber que quando o status mudar para “ Processando ” ou “ Reembolsado ”, o estoque dos produtos envolvidos no pedido será recalculado. O mesmo acontecerá com todas as estatísticas da loja online relacionadas a esse pedido.

Agora que temos uma ideia clara de como o status do pedido muda, vamos ver como atualizar o status do pedido no WooCommerce .

Como alterar o status do pedido automaticamente no WooCommerce

Vamos dar uma olhada em alguns scripts de exemplo para alterar o status do pedido programaticamente no WooCommerce .

NOTA : Vamos editar alguns arquivos principais, portanto, antes de começar, certifique-se de fazer um backup completo do seu site. Além disso, crie um tema filho ou use qualquer um desses plugins se você ainda não tiver um, para manter suas personalizações mesmo depois de atualizar seu tema.

Alterar todo o status do pedido após a compra

Se sua loja de comércio eletrônico não estiver integrada a nenhum gateway de pagamento que use o status do pedido, você poderá colocar todos os pedidos em espera logo após o cliente fazer um pedido, em vez de deixá-lo como "Processando". Vamos dar uma olhada neste script:

 function QuadLayers_change_order_status( $order_id ) {  
                if (! $order_id) {return;}            
                $pedido = wc_get_order( $pedido_id);
                if( 'processando'== $pedido->get_status() ) {
                    $order->update_status('wc-on-hold');
                }
}
add_action('woocommerce_thankyou','QuadLayers_change_order_status');

Usamos o gancho woocommerce_thankyou para acionar nossa função logo após um pedido ser feito e alteramos o status usando update_status() .

Como você pode ver, o slug de status tem um prefixo (WC). Embora a função também funcione sem o prefixo, é uma prática recomendada usá-la.

woocommerce-order-status-on-hold

Vale a pena notar que você pode usar qualquer outro status e até personalizado em vez de “Em espera” ajustando o código.

Modificar o status do pedido do ID do pedido

O script a seguir alterará o status de um único pedido. Por exemplo, para alterar o status do pedido 115, usamos o seguinte snippet:

 add_action('init',function(){
	$pedido = new WC_Order(115);
        $order->update_status('wc-processing'); 
});

Este é um script curto, então usamos uma função anônima no gancho 'init' WordPress.

Observe que isso não permitirá que você faça mais alterações no status enquanto o script estiver ativado.

Atualize o status do pedido WooCommerce para clientes recorrentes

Este é outro exemplo interessante para alterar o status do pedido automaticamente no WooCommerce. O script abaixo alterará o status do pedido para “Concluído” somente se o usuário tiver um pedido anterior anexado com o status “Concluído” ou “Processando”.

 function QuadLayers_order_status_returning( $order_id ) {
        // Recebe os pedidos deste cliente
         $user_id = wp_get_current_user();
        $customer_orders = [];
        foreach ( wc_get_is_paid_statuses() as $paid_status ) {
            $customer_orders += wc_get_orders( [
                'type' => 'shop_order',
                'limite' => - 1,
                'customer_id' => $user_id->ID,
                'status' => $paid_status,
            ]);
        }
            # pedido anterior existe
            if(count($customer_orders)>0){ 
                     if (! $order_id) {return;}            
                     $pedido = wc_get_order( $pedido_id);
                     if( 'processando'== $pedido->get_status() ) {
                         $order->update_status('wc-completed');
                     }
            }
}
add_action( 'woocommerce_thankyou', 'QuadLayers_order_status_returning');

Essa pode ser uma boa ideia para adicionar uma camada de segurança e melhorar a experiência de compra dos clientes recorrentes.

Alterar o status do pedido em um parâmetro de URL

Este script de amostra mudará para um status de pedido específico quando o parâmetro de URL estiver presente no navegador. Como estamos usando o gancho init do WordPress, o script funcionará em qualquer página da loja.

Além disso, ele editará o status do pedido para o último pedido do usuário conectado no momento. Neste exemplo, o status do pedido mudará para “Cancelado” quando qualquer URL tiver o parâmetro “reverter” como este: https://website.com/shop?st=revert

 add_action('init',function(){
    if(isset($_GET['st'])&&!empty($_GET['st'])):
        $get_url = $_GET['st'];
 
        if($get_url=='reverter'):
            $user_id = wp_get_current_user();
            $pedido = wc_get_customer_last_order($user_id->ID);  
            $order->update_status('wc-cancelado');
        fim se;
    fim se;
});

Criar um status de pedido personalizado

Em vez de alterar o status de um pedido, neste exemplo, criaremos um novo status de pedido personalizado que podemos usar livremente. Essa é uma boa ideia se os status existentes não forem suficientes ou se você preferir criar um novo para maior clareza. Depois de criar um status de pedido personalizado, você pode usá-lo com qualquer um dos scripts acima.

O script a seguir registrará e adicionará um novo status à lista de status do pedido. Nesse caso, chamaremos o novo status do pedido personalizado de “Em andamento ”, mas você pode usar o nome que quiser, simplesmente personalizando o código.

 // Registra um novo status
function register_in_progress_order_status() {
    register_post_status('wc-in-progress', array(
        'label' => 'Em andamento',
        'público' => verdadeiro,
        'show_in_admin_status_list' => verdadeiro,
        'show_in_admin_all_list' => verdadeiro,
        'exclude_from_search' => false,
        'label_count' => _n_noop( 'Em andamento (%s) ', 'Em andamento (%s) ' )
    ));
}
// Adiciona status personalizado à lista de status do pedido
function add_in_progress_to_order_statuses($order_statuses) {
    $new_order_statuses = array();
    foreach ( $order_statuses as $key => $status) {
        $new_order_statuses[ $key ] = $status;
        if ('wc-processing' === $key) {
            $new_order_statuses['wc-in-progress'] = 'Em andamento';
        }
    }
    return $new_order_statuses;
}
add_action( 'init', 'register_in_progress_order_status' );
add_filter( 'wc_order_statuses', 'add_in_progress_to_order_statuses' );



woocommerce-custom-order-status

Outras maneiras de alterar o status do pedido do WooCommerce

Se você está procurando maneiras alternativas de atualizar o status do pedido padrão no WooCommerce, pode conferir alguns plugins. Infelizmente, não existem muitas ferramentas gratuitas para isso, mas estas são algumas das melhores:

  • YITH Custom Order Status : Uma excelente ferramenta para gerenciar os status dos pedidos e criar outros personalizados. É uma das melhores ferramentas do mercado, mas não é barata. Vai custar-lhe 79,99€ por ano.
  • WooCommerce Order Status Manager : Outro ótimo plugin para adicionar, remover e editar o status do pedido. Você também pode acionar e-mails com base no status dos pedidos. Custa 49 dólares por ano.
  • Status do pedido personalizado para WooCommerce : Uma das melhores ferramentas para gerenciar o status do pedido no WooCommerce. É um plugin premium que começa em 39 USD por ano.
  • Ni WooCommerce Custom Order Status : Um dos poucos plugins gratuitos confiáveis ​​que permitem que você gerencie o status do seu pedido com facilidade.

Como ver o status do pedido em sua loja WooCommerce

A maneira mais fácil de ver o status do pedido em sua loja é abrir o painel do WooCommerce e acessar Pedidos. Em seguida, abra qualquer pedido e, na seção Geral , pressione o menu suspenso Status. Lá você verá todos os pedidos em sua loja.

Conclusão

Em resumo, o status do pedido é uma tag que representa o estado atual de um pedido. Embora o WooCommerce inclua certos status padrão, personalizá-los pode ser uma boa ideia para quem deseja remover ou adicionar novos. Também pode ser uma solução interessante para empresas que precisam de uma solução automatizada para o gerenciamento do status de seus pedidos.

Neste guia, vimos todos os status de pedido padrão e diferentes exemplos para alterar o status do pedido automaticamente no WooCommerce. Estas são apenas algumas idéias, mas há muito mais que você pode fazer. Recomendamos que você use esses scripts como base e brinque para personalizá-los para sua loja.

Para mais informações sobre como personalizar sua loja, dê uma olhada nestes tutoriais:

  • Como aplicar cupons WooCommerce automaticamente
  • Editar página de agradecimento do WooCommerce programaticamente
  • Como personalizar o formulário de registro do WooCommerce
  • 3 Métodos para testar pedidos WooCommerce
  • Como adicionar filtros de produtos WooCommerce AJAX

Você atualizou o status do pedido em sua loja? Você teve algum problema ao seguir este guia? Deixe-nos saber nos comentários abaixo!