Mais uma vez agrade?o-lhe pela resposta, ainda para mais n?o sendo algo diretamente relacionado com plugin.
Em rela??o à inativa??o do email nas configura??es do Woocommerce, considerei n?o ser a solu??o ideal para o meu caso, porque o que eu pretendo realmente é ter um estado intermédio entre o estado “Aguarda a confirma??o de pagamento” e o estado “Em processamento”, ou seja continuarei a precisar do estado de “Em processamento” depois da encomeda passar pelo estado “Em análise”, e como tal precisarei também do email associado.
Contudo, para resolver este problema acabei por utilizar o filtro que tinha sugerido na sua primeira resposta, com esse filtro já n?o envia o mail de “Em processamento” quando o estado é “Em análise”. No entanto depois deparei-me com outro problema que era que ao mudar o estado manualmente de “Em análise” para “Em processamento” o woocommerce n?o enviava o email de “Em processamento” e acabei por adicionar outro Hook para resolver este problema. Deixo aqui a solu??o para possiveis interessados:
// Adiciona um filtro para modificar o status do pedido após o pagamento
add_filter('woocommerce_payment_complete_order_status', 'custom_order_status_after_payment', 10, 2);
// Fun??o para modificar o status do pedido após o pagamento
function custom_order_status_after_payment($order_status, $order_id)
{
// Obtém o objeto da encomenda
$order = wc_get_order($order_id);
// Verifica se a encomenda n?o está no estado 'Em análise'
if ($order->get_status() !== 'em-analise') {
// Retorna o status 'Em análise'
return 'em-analise';
}
// Se já estiver no status em 'Em análise', mantém o status atual
return $order_status;
}
// Adiciona um Hook para detetar quando o status do pedido é alterado manualmente
add_action('woocommerce_order_status_changed', 'send_processing_email_on_manual_update', 10, 4);
// Fun??o para enviar e-mail quando o status do pedido é manualmente alterado para 'Em processamento'
function send_processing_email_on_manual_update($order_id, $old_status, $new_status, $order)
{
// Verifica se o status está a mudar para 'Em processamento' e se é uma atualiza??o manual
if ($new_status === 'processing' && !empty($_POST['_wpnonce'])) {
// Envia o e-mail de 'Em processamento'
WC()->mailer()->emails['WC_Email_Customer_Processing_Order']->trigger($order_id);
}
}