Olá. Não existe mudança de status “automática” por assim dizer. Os status são alterados conforme uma ação é feita no WooCommerce. No caso do seu link, ele muda para “completado” quando acessa a página de “obrigado por comprar”.
Você quer mudar para “em separação” quando acontecer qual ação?
Esse status já existe na sua loja?
Tenho 2 status personalizados
Pdv Integrado e Em Separação…
Funciona assim:
Cliente compra e paga…
Pedido pendente -> processando
Aí o meu ERP baixa esse pedido automaticamente e muda para o status PDV INTEGRADO
Queria que assim que fica-se esse status, ele muda-se para o status EM SEPARAÇÃO
Por a caso seria isso aqui?
function custom_woocommerce_auto_complete_order( $order_id ) {
if ( ! $order_id ) {
return;
}
$order = wc_get_order( $order_id );
if( ‘pdv_integrado’== $order->get_status() ) {
$order->update_status( ‘em_separação’ );
}
}
add_action( ‘woocommerce_thankyou’, ‘custom_woocommerce_auto_complete_order’ );
Esse hook que você está usando não tem relação com mudança de status.
“add_action( ‘woocommerce_thankyou’” é acionado quando a página “thankyou”, ou seja, a de “Obrigado por comprar conosco”, é exibida. Esqueça esse código. rs
Talvez esse abaixo funcione:
function custom_woocommerce_auto_complete_order( $order_id, $from ) {
if ( ! $order_id ) {
return;
}
$order = wc_get_order( $order_id );
if( 'pdv_integrado' == $from ) {
$order->update_status( 'em_separação' );
}
}
add_action( 'woocommerce_order_status_changed', 'custom_woocommerce_auto_complete_order', 10, 2 );
Tem que ver certinho como é o slug do status. Parece que “em_separação” é só um exemplo?!
Não é um exemplo não, é o que eu uso…
E não consigo mudar o status que o meu sistema ERP faz.
Então pode usar assim, mesmo.
Não funcionou… só corrigi em relação ao que eu havia informado antes, o slug é -emseparação’ mudei no código que vc me enviou… mas não alterou o status…
Coloquei o snippet para rodar no site todo e somente no admin..
Percebi uma coisa com esse seu código, que quando mudo o status para cancelado do pedido teste, aí sim que ele muda para em separação, aqui no link tem o print das informações do pedido.
https://uploaddeimagens.com.br/imagens/eob-N58
Desculpe. Eu errei os argumentos da função:
function custom_woocommerce_auto_complete_order( $order_id, $from, $to ) {
if ( ! $order_id ) {
return;
}
$order = wc_get_order( $order_id );
if( 'pdv_integrado' == $to ) {
$order->update_status( 'em_separação' );
}
}
add_action( 'woocommerce_order_status_changed', 'custom_woocommerce_auto_complete_order', 10, 3 );
-
Esta resposta foi modificada 2 anos, 1 mês atrás por Luis Braschi.
Agora vai de PDV integrado para pagamento pendente rs
Esse eu testei aqui e deveria funcionar. Você corrigiu o slug? Eu acabei copiando como em_separação
.
Corrigi sim… será que é por todos os status que tem aqui?
-
Esta resposta foi modificada 2 anos, 1 mês atrás por samirantonio.
Quero agradecer muito…
Consegui aqui com o seu código… o que estava dando erro, era apenas um ponto que não havia visto no slug.. o que funcionou, foi o segundo código….