Home / Nosso Blog
Leve seu marketing digital para o próximo nível com estratégias baseadas em dados e soluções inovadoras. Vamos criar algo incrível juntos!
Acompanhe semanalmente nosso canal no youtube com vídeos de marketing e performance e se inscreva-se

Recentemente, estive trabalhando em um novo plugin que lançaremos em breve e que adicionará suporte para atendimento de pedidos por meio de Amazon FBA para WooCommerce e me deparei com uma pergunta: Como posso adicionar uma ação de pedido personalizada no canto superior direito da página de edição do pedido? Geralmente, o WooCommerce tem uma documentação de desenvolvedor muito boa e há muitos tutoriais sobre outras personalizações por aí, mas não consegui encontrar uma resposta em minhas pesquisas. Um problema é que o termo de pesquisa “ação” está carregado. Pode significar muitas coisas no contexto WooCommerce e WordPress e há muitos resultados relacionados a esse termo. Mas, neste caso, a frase Order Action significava um item muito específico no menu suspenso metabox da página de edição do pedido que aciona algum código adicional quando o botão aplicar ou salvar pedido é clicado.
Espero que isso economize mais tempo do que gastei procurando e experimentando a solução. Meu código de exemplo é baseado na suposição de que você também trabalhará dentro do contexto de sua própria classe. Se você estiver apenas adicionando código semelhante a algo como o arquivo functions.php do seu tema, o formato da chamada add_action() será um pouco diferente e você desejará apenas passar uma string como o segundo parâmetro para o nome da função, em vez do array que estou usando.
Na verdade, depois de saber os ganchos certos para usar, esta é uma modificação muito fácil de fazer. A primeira coisa que precisamos fazer é colocar algo nesse menu suspenso. Existem 2 partes para fazer isso. Parte 1 – conecte a ação woocommerce_order_actions assim:
// adiciona nosso próprio item à metacaixa de ações do pedido
add_action(‘woocommerce_order_actions’, array($this, ‘add_order_meta_box_actions’ ));
Parte 2 – precisamos definir a função add_order_meta_box_actions que irá realmente colocar o item ou itens lá assim:
//define o item na meta box adicionando um item ao array $actions
função add_order_meta_box_actions($actions) {
$actions(‘ns_fba_send_to_fulfillment’) = __( ‘Enviar para Amazon FBA’, $this->text_domain );
return $ações;
}
O que está acontecendo aqui é que o gancho add_order_meta_box_actions recebe automaticamente um array do WooCommerce chamado $actions que contém tudo o que já está no menu suspenso. Estamos apenas adicionando um novo elemento a esse array com nossa própria chave (ns_fba_send_to_fulfillment em nosso exemplo) e valor. Você precisará se lembrar da chave para a próxima etapa.
Em seguida, precisamos dizer ao WooCommerce o que fazer quando nossa ação personalizada for selecionada e o botão aplicar (ou botão salvar pedido) for clicado. Conseguimos isso adicionando outro manipulador de ações como este:
// processa a ação de pedido da meta box do pedido personalizado
add_action(‘woocommerce_order_action_ns_fba_send_to_fulfillment’, array( $this, ‘process_order_meta_box_actions’ ));
Este é um pouco mais complicado. Se você perceber o que está acontecendo, o WooCommerce gera automaticamente ganchos por item de ação na matriz de ações do pedido. Pode haver vários ganchos nomeados como woocommerce_order_action_* e, para conectar-se ao item de ação do pedido personalizado, é aqui que você precisa lembrar e anexar o nome da chave ao prefixo da ação. Então isto:
$ações(‘ns_fba_send_to_fulfillment‘) = __(‘Enviar para Amazon FBA’, $this->text_domain );
Levou a isso:
add_action(‘woocommerce_order_action_ns_fba_send_to_fulfillment‘, array($this, ‘process_order_meta_box_actions’ ) );
Finalmente, tudo o que resta é definir nossa função process_order_meta_box_actions assim:
// executa o código que deve ser executado com esta ação é acionada
função process_order_meta_box_actions($order) {
// temos o objeto $order atual da página de edição de pedido em que estamos e podemos fazer coisas adicionais com ele
$this->do_something_else( $order->ID );
}
Você pode definir do_something_else() ou pode tomar medidas adicionais no objeto $order diretamente dentro do seu manipulador.
WooCommerce possui uma extensa estrutura de ganchos (ações e filtros), o que normalmente é fantástico. Mas de vez em quando pode ter consequências indesejadas se você não estiver ciente de todas as implicações. Uma coisa que encontrei foi um loop infinito quando minha ação personalizada foi disparada. Acontece que isso acontecia porque uma das coisas que eu estava fazendo em minha ação de pedido personalizado era atualizar o status do pedido chamando $order->update_status. Nunca rastreei o problema até a fonte, mas suspeito que possa ser um bug no WooCommerce. Os ganchos de ação em update_status() provavelmente estavam acionando um status post_updated que por sua vez acionou outro update_status e assim por diante. Para contornar isso, como as estátuas de pedidos do WooCommerce são apenas termos normais na taxonomia shop_order_status, usei apenas a maneira normal do WP de fazer isso:
wp_set_post_terms($order_id, ‘status-name’, ‘shop_order_status’, false);
Como não possui nenhum gancho WooCommerce anexado, não houve implicação de loop infinito, mas o resultado foi idêntico.
O que você fará com suas ações de pedido personalizadas agora que sabe como?
Você administra uma loja WooCommerce e já usa o Amazon FBA para atendimento? Ou você está procurando uma maneira de automatizar seu envio? Você pode conectar Woocommerce ao Amazon FBA para um 100% solução de envio automatizado! Confira nossa integração poderosa que torna muito fácil o envio automático de seus pedidos para a Amazon para atendimento por meio de WooCommerce FBA.
Fonte: Link original
”Negócio desatualizado ele não está apenas perdendo dinheiro, mas está perdendo a chance de fazer a diferença ao mundo”
Produtor